From 273193ddd9a0535f6988879562a6d82f22d40dd9 Mon Sep 17 00:00:00 2001 From: heck Date: Mon, 3 May 2021 14:18:52 +0200 Subject: [PATCH 1/2] Tests: Add test JNI-153 - "'malloc_consolidate(): invalid chunk size' after receiving message from 'mistrusted' identity" This is also the prototype for nextgen DistributedTests (RoleAbstraction,MultiNode, MultiIdents) --- .../jniadapter/test/jni153/CTXMultiNode.java | 146 ++++++++++++++++++ .../pEp/jniadapter/test/jni153/Makefile | 46 ++++++ .../pEp/jniadapter/test/jni153/TestAlice.java | 41 +++++ .../pEp/jniadapter/test/jni153/TestBob.java | 45 ++++++ 4 files changed, 278 insertions(+) create mode 100644 test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java create mode 100644 test/java/foundation/pEp/jniadapter/test/jni153/Makefile create mode 100644 test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java create mode 100644 test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java b/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java new file mode 100644 index 0000000..c0ee7c6 --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java @@ -0,0 +1,146 @@ +package foundation.pEp.jniadapter.test.jni153; + +import foundation.pEp.jniadapter.Engine; +import foundation.pEp.jniadapter.Identity; +import foundation.pEp.jniadapter.Message; +import foundation.pEp.jniadapter.decrypt_message_Return; +import foundation.pEp.jniadapter.test.utils.TestCallbacks; +import foundation.pEp.jniadapter.test.utils.model.*; +import foundation.pEp.jniadapter.test.utils.transport.fsmqmanager.FsMQIdentity; +import foundation.pEp.jniadapter.test.utils.transport.fsmqmanager.FsMQManager; +import foundation.pEp.jniadapter.test.utils.transport.fsmqmanager.FsMQMessage; +import foundation.pEp.pitytest.AbstractTestContext; +import foundation.pEp.pitytest.TestContextInterface; + +import java.util.List; +import java.util.Vector; +import java.util.stream.Collectors; + +import static foundation.pEp.pitytest.TestLogger.log; + +public class CTXMultiNode extends AbstractTestContext { + public Engine engine; + public TestCallbacks callbacks; + public FsMQManager transport; + + // Model + public TestModel model; + // Mappings + private NodeName ownNodeName; + private TestNode ownNode; + public TestIdentity myself; + public TestIdentity partner; + + CTXMultiNode(NodeName ownNodeName) { + this.ownNodeName = ownNodeName; + } + + @Override + public TestContextInterface init() throws Throwable { + // pEp + callbacks = new TestCallbacks(); + engine = new Engine(); + engine.setMessageToSendCallback(callbacks); + engine.setNotifyHandshakeCallback(callbacks); + + // Model + model = setupModel(); + + // Setup Perspective + ownNode = model.getNode(ownNodeName); + myself = ownNode.getIdent(); + partner = myself.getDefaultPartner(); + + // Transport + // Create own transport identity and Transport + FsMQIdentity transportIdent = myself.getTransportIdent(ownNodeName); + transport = new FsMQManager(transportIdent); + + // Add all transport identities of the model + for (TestIdentity ti : model.getAllIdents()) { + transport.identities.addAll(ti.getAllTransportIdents()); + } + + return this; + } + + public void send(String pEpAddress, String msg) { + //Find identity for address + List res = model.getAllIdents().stream().filter(i -> { + return i.pEpIdent.address.equals(pEpAddress); + }).collect(Collectors.toList()); + + if (res.size() > 1) { + throw new RuntimeException("Unknown Error"); + } else if (res.size() <= 0) { + throw new RuntimeException("Unknown address"); + } + TestIdentity id = res.get(0); + + for (FsMQIdentity tID : id.getAllTransportIdents()) { + transport.sendMessage(tID.getAddress(), msg); +// log("send() to: " + tID.getAddress()); + } + } + + private TestModel setupModel() { + TestModel ret = new TestModel(); + + ret.getNode(NodeName.NODE_A1).setRole(Role.ALICE); + ret.getNode(NodeName.NODE_B1).setRole(Role.BOB); + + ret.getIdent(Role.ALICE).setDefaultPartner(Role.BOB); + ret.getIdent(Role.BOB).setDefaultPartner(Role.ALICE); +// ret.getIdent(Role.CAROL).setDefaultPartner(Role.ALICE); + + return ret; + } + + public Message reveiveMessage() { + FsMQMessage rx = null; + rx = transport.receiveMessage(2000); + + // Receive + Message msgIn = new Message(rx.getMsg()); + Message msgInDec = null; + + decrypt_message_Return decRet = engine.decrypt_message(msgIn, null, 0); + + msgInDec = decRet.dst; + + String encFormat = "PLAIN"; + if (!msgIn.getLongmsg().equals(msgInDec.getLongmsg())) { + encFormat = "CRYPT"; + } + + log("-> : [" + encFormat + "] - " + msgInDec.getLongmsg()); + return msgInDec; + } + + public void sendMessage(Identity toIdent, String longMessage) { + // Reply + Message reply = new Message(); + Vector to = new Vector<>(); + to.add(toIdent); + reply.setTo(to); + reply.setFrom(myself.pEpIdent); + reply.setShortmsg("Reply"); + reply.setLongmsg(longMessage); + reply.setDir(Message.Direction.Outgoing); + + Message replyEnc = engine.encrypt_message(reply, null, Message.EncFormat.PEP); + + String encFormat; + longMessage = reply.getLongmsg(); + String transportMsg; + if (replyEnc != null) { + encFormat = "CRYPT"; + transportMsg = replyEnc.encodeMIME(); + } else { + encFormat = "PLAIN"; + transportMsg = reply.encodeMIME(); + } + log("<- : [" + encFormat + "] - " + longMessage); + send(toIdent.address, transportMsg); + } +} diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/Makefile b/test/java/foundation/pEp/jniadapter/test/jni153/Makefile new file mode 100644 index 0000000..34409e7 --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni153/Makefile @@ -0,0 +1,46 @@ +include ../../../../../../../Makefile.conf +include ../Makefile.conf + +TEST_UNIT_NAME=jni153 + +JAVA_CLASSES+= \ + TestAlice.class \ + TestBob.class \ + CTXMultiNode.class + +.PHONY: pitytest compile alice bob test clean + +all: both compile + +pitytest: + $(MAKE) -C $(PITYTEST_DIR) + +both: + $(MAKE) bob& + $(MAKE) alice + +alice: compile clean-pep-home-alice + cd $(JAVA_CWD);pwd;HOME=$(JAVA_PEP_HOME_DIR_ALICE) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestAlice + +bob: compile clean-pep-home-bob + cd $(JAVA_CWD);pwd;HOME=$(JAVA_PEP_HOME_DIR_BOB) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestBob + +compile: $(JAVA_CLASSES) pitytest + +%.class: %.java + cd $(JAVA_CWD);$(JAVAC_CMD) -cp $(CLASSPATH) $(JAVA_PKG_BASEPATH)/$(TEST_UNIT_NAME)/$< + +clean: + rm -f $(JAVA_CLASSES) + rm -f *.class + rm -f *.log + rm -Rf .gnupg + rm -Rf .lldb + +clean-pep-home: clean-pep-home-alice clean-pep-home-bob + +clean-pep-home-alice: + rm -rf $(PEP_HOME_DIR_ALICE)/.pEp + +clean-pep-home-bob: + rm -rf $(PEP_HOME_DIR_BOB)/.pEp diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java b/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java new file mode 100644 index 0000000..79da0a7 --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java @@ -0,0 +1,41 @@ +package foundation.pEp.jniadapter.test.jni153; + +import foundation.pEp.jniadapter.Message; +import foundation.pEp.jniadapter.test.utils.AdapterTestUtils; +import foundation.pEp.jniadapter.test.utils.model.NodeName; +import foundation.pEp.pitytest.TestSuite; +import foundation.pEp.pitytest.TestUnit; +import foundation.pEp.pitytest.utils.TestUtils; + +import static foundation.pEp.pitytest.TestLogger.log; + + +class TestAlice { + public static void main(String[] args) throws Exception { + TestSuite.getDefault().setVerbose(true); + TestSuite.getDefault().setTestColor(TestUtils.TermColor.GREEN); + + CTXMultiNode JNI153Ctx = new CTXMultiNode(NodeName.NODE_A1); + + new TestUnit("test", JNI153Ctx, ctx -> { + ctx.myself.pEpIdent = ctx.engine.myself(ctx.myself.pEpIdent); + log(AdapterTestUtils.identityToString(ctx.myself.pEpIdent, true)); + ctx.transport.clearOwnQueue(); + int counter = 0; + while (true) { + Message src = AdapterTestUtils.makeNewTestMessage(ctx.myself.pEpIdent, ctx.partner.pEpIdent, Message.Direction.Outgoing); + src.setLongmsg("UNIQUE_" + String.valueOf(counter)); + ctx.sendMessage(ctx.partner.pEpIdent, src.getLongmsg()); + ctx.reveiveMessage(); + + counter++; + TestUtils.sleep(3000); +// TestUtils.readKey(); + } + }); + + TestSuite.getDefault().run(); + } +} + + diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java b/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java new file mode 100644 index 0000000..b6003b3 --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java @@ -0,0 +1,45 @@ +package foundation.pEp.jniadapter.test.jni153; + +import foundation.pEp.jniadapter.Message; +import foundation.pEp.jniadapter.test.utils.AdapterTestUtils; +import foundation.pEp.jniadapter.test.utils.model.NodeName; +import foundation.pEp.pitytest.TestSuite; +import foundation.pEp.pitytest.TestUnit; +import foundation.pEp.pitytest.utils.TestUtils; + +import static foundation.pEp.pitytest.TestLogger.log; + +class TestBob { + public static void main(String[] args) throws Exception { + TestSuite.getDefault().setVerbose(true); + TestSuite.getDefault().setTestColor(TestUtils.TermColor.YELLOW); + + CTXMultiNode JNI153Ctx = new CTXMultiNode(NodeName.NODE_B1); + + new TestUnit("test", JNI153Ctx, ctx -> { + ctx.myself.pEpIdent = ctx.engine.myself(ctx.myself.pEpIdent); + log(AdapterTestUtils.identityToString(ctx.myself.pEpIdent, true)); + ctx.transport.clearOwnQueue(); + int counter = 0; + + while (true) { + TestUtils.sleep(3000); + Message msgRx = ctx.reveiveMessage(); + + //Mistrust + if (counter == 1) { + log("Mistrusting"); + ctx.engine.keyMistrusted(msgRx.getFrom()); + } + + ctx.sendMessage(msgRx.getFrom(), msgRx.getLongmsg() + " - ACK"); + + counter++; + } + }); + + TestSuite.getDefault().run(); + } + + +} From 14038e6aaaf92ed465eab1322f08681f8732303c Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 7 May 2021 00:43:41 +0200 Subject: [PATCH 2/2] Tests: Add test JNI-153 - implement/emulate pEp4FM threading model --- .../jniadapter/test/jni153/CTXMultiNode.java | 197 +++++++++++++----- .../pEp/jniadapter/test/jni153/TestAlice.java | 20 +- .../pEp/jniadapter/test/jni153/TestBob.java | 33 ++- .../test/utils/AdapterTestUtils.java | 24 +++ 4 files changed, 202 insertions(+), 72 deletions(-) diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java b/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java index c0ee7c6..1f2d99c 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java +++ b/test/java/foundation/pEp/jniadapter/test/jni153/CTXMultiNode.java @@ -1,7 +1,6 @@ package foundation.pEp.jniadapter.test.jni153; import foundation.pEp.jniadapter.Engine; -import foundation.pEp.jniadapter.Identity; import foundation.pEp.jniadapter.Message; import foundation.pEp.jniadapter.decrypt_message_Return; import foundation.pEp.jniadapter.test.utils.TestCallbacks; @@ -13,7 +12,7 @@ import foundation.pEp.pitytest.AbstractTestContext; import foundation.pEp.pitytest.TestContextInterface; import java.util.List; -import java.util.Vector; +import java.util.concurrent.LinkedBlockingQueue; import java.util.stream.Collectors; import static foundation.pEp.pitytest.TestLogger.log; @@ -21,16 +20,18 @@ import static foundation.pEp.pitytest.TestLogger.log; public class CTXMultiNode extends AbstractTestContext { public Engine engine; public TestCallbacks callbacks; - public FsMQManager transport; + public Transport transport; // Model public TestModel model; + // Mappings private NodeName ownNodeName; private TestNode ownNode; public TestIdentity myself; public TestIdentity partner; + CTXMultiNode(NodeName ownNodeName) { this.ownNodeName = ownNodeName; } @@ -54,19 +55,68 @@ public class CTXMultiNode extends AbstractTestContext { // Transport // Create own transport identity and Transport FsMQIdentity transportIdent = myself.getTransportIdent(ownNodeName); - transport = new FsMQManager(transportIdent); + transport = new Transport(transportIdent, model.getAllIdents()); + + return this; + } + + private TestModel setupModel() { + TestModel ret = new TestModel(); + + ret.getNode(NodeName.NODE_A1).setRole(Role.ALICE); + ret.getNode(NodeName.NODE_B1).setRole(Role.BOB); + + ret.getIdent(Role.ALICE).setDefaultPartner(Role.BOB); + ret.getIdent(Role.BOB).setDefaultPartner(Role.ALICE); +// ret.getIdent(Role.CAROL).setDefaultPartner(Role.ALICE); + + return ret; + } + +} - // Add all transport identities of the model - for (TestIdentity ti : model.getAllIdents()) { - transport.identities.addAll(ti.getAllTransportIdents()); +class Transport { + private FsMQManager fsMQTransport = null; + private EncryptingSenderThread sender = null; + private DecryptingReceiverThread receiver = null; + private FsMQIdentity myself = null; + private List peers = null; + + // Message queues + private LinkedBlockingQueue txQueue = new LinkedBlockingQueue<>(); + private LinkedBlockingQueue rxQueue = new LinkedBlockingQueue<>(); + + public Transport(FsMQIdentity ownIdent, List peers) { + this.myself = ownIdent; + this.peers = peers; + this.sender = new EncryptingSenderThread(this, txQueue); + this.receiver = new DecryptingReceiverThread(this, rxQueue); + this.fsMQTransport = new FsMQManager(ownIdent); + + for (TestIdentity ti : peers) { + fsMQTransport.identities.addAll(ti.getAllTransportIdents()); } + } - return this; + public void clearOwnQueue() { + fsMQTransport.clearOwnQueue(); + } + + public boolean canReceiveAsync() { + return !rxQueue.isEmpty(); } - public void send(String pEpAddress, String msg) { + public void sendAsync(Message msg) { + txQueue.add(msg); + } + + public Message receiveAsyncNonBlocking() { + return rxQueue.remove(); + } + + public void sendRaw(String pEpAddress, String msg) { //Find identity for address - List res = model.getAllIdents().stream().filter(i -> { + List res = peers.stream().filter(i -> { return i.pEpIdent.address.equals(pEpAddress); }).collect(Collectors.toList()); @@ -78,30 +128,100 @@ public class CTXMultiNode extends AbstractTestContext { TestIdentity id = res.get(0); for (FsMQIdentity tID : id.getAllTransportIdents()) { - transport.sendMessage(tID.getAddress(), msg); + fsMQTransport.sendMessage(tID.getAddress(), msg); // log("send() to: " + tID.getAddress()); } } - private TestModel setupModel() { - TestModel ret = new TestModel(); + public String receiveRaw() { + FsMQMessage rx = fsMQTransport.receiveMessage(2000); + return rx.getMsg(); + } - ret.getNode(NodeName.NODE_A1).setRole(Role.ALICE); - ret.getNode(NodeName.NODE_B1).setRole(Role.BOB); + public void start() { + sender.start(); + receiver.start(); + } +} - ret.getIdent(Role.ALICE).setDefaultPartner(Role.BOB); - ret.getIdent(Role.BOB).setDefaultPartner(Role.ALICE); -// ret.getIdent(Role.CAROL).setDefaultPartner(Role.ALICE); - return ret; +class EncryptingSenderThread extends Thread { + private Engine engine = null; + private Transport transport = null; + private LinkedBlockingQueue queue; + + public EncryptingSenderThread(Transport transport, LinkedBlockingQueue queue) { + this.transport = transport; + this.queue = queue; + } + + @Override + public void run() { + engine = new Engine(); + Message msg; + String msgEnc; + while (true) { + try { + msg = queue.take(); + if (msg.getTo().size() != 1) { + throw new RuntimeException("Sorry, msg.To has to have exactly 1 receiver for now"); + } + String to = msg.getTo().get(0).address; + msgEnc = encryptMessage(msg); + transport.sendRaw(to, msgEnc); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + public String encryptMessage(Message msg) { + String longMessage = msg.getLongmsg(); + + Message msgEnc = engine.encrypt_message(msg, null, Message.EncFormat.PEP); + String encFormat; + String transportMsg; + if (msgEnc != null) { + encFormat = "CRYPT"; + transportMsg = msgEnc.encodeMIME(); + } else { + encFormat = "PLAIN"; + transportMsg = msg.encodeMIME(); + } + log("<- : [" + encFormat + "] - " + longMessage); + return transportMsg; + } +} + + +class DecryptingReceiverThread extends Thread { + private Engine engine = null; + private Transport transport = null; + private LinkedBlockingQueue queue; + + public DecryptingReceiverThread(Transport transport, LinkedBlockingQueue queue) { + this.transport = transport; + this.queue = queue; } - public Message reveiveMessage() { - FsMQMessage rx = null; - rx = transport.receiveMessage(2000); + @Override + public void run() { + engine = new Engine(); + String msg; + Message msgDec; + while (true) { + msg = transport.receiveRaw(); + msgDec = decryptMessage(msg); + try { + queue.put(msgDec); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } - // Receive - Message msgIn = new Message(rx.getMsg()); + private Message decryptMessage(String msg) { + Message msgIn = new Message(msg); Message msgInDec = null; decrypt_message_Return decRet = engine.decrypt_message(msgIn, null, 0); @@ -116,31 +236,4 @@ public class CTXMultiNode extends AbstractTestContext { log("-> : [" + encFormat + "] - " + msgInDec.getLongmsg()); return msgInDec; } - - public void sendMessage(Identity toIdent, String longMessage) { - // Reply - Message reply = new Message(); - Vector to = new Vector<>(); - to.add(toIdent); - reply.setTo(to); - reply.setFrom(myself.pEpIdent); - reply.setShortmsg("Reply"); - reply.setLongmsg(longMessage); - reply.setDir(Message.Direction.Outgoing); - - Message replyEnc = engine.encrypt_message(reply, null, Message.EncFormat.PEP); - - String encFormat; - longMessage = reply.getLongmsg(); - String transportMsg; - if (replyEnc != null) { - encFormat = "CRYPT"; - transportMsg = replyEnc.encodeMIME(); - } else { - encFormat = "PLAIN"; - transportMsg = reply.encodeMIME(); - } - log("<- : [" + encFormat + "] - " + longMessage); - send(toIdent.address, transportMsg); - } -} +} \ No newline at end of file diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java b/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java index 79da0a7..ae7f378 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java +++ b/test/java/foundation/pEp/jniadapter/test/jni153/TestAlice.java @@ -18,19 +18,21 @@ class TestAlice { CTXMultiNode JNI153Ctx = new CTXMultiNode(NodeName.NODE_A1); new TestUnit("test", JNI153Ctx, ctx -> { + ctx.transport.clearOwnQueue(); ctx.myself.pEpIdent = ctx.engine.myself(ctx.myself.pEpIdent); log(AdapterTestUtils.identityToString(ctx.myself.pEpIdent, true)); - ctx.transport.clearOwnQueue(); + + ctx.transport.start(); + + ctx.transport.sendAsync(AdapterTestUtils.newOutMessage(ctx.myself.pEpIdent, ctx.partner.pEpIdent, "UNIQUE_" + String.valueOf(0))); int counter = 0; + while (true) { - Message src = AdapterTestUtils.makeNewTestMessage(ctx.myself.pEpIdent, ctx.partner.pEpIdent, Message.Direction.Outgoing); - src.setLongmsg("UNIQUE_" + String.valueOf(counter)); - ctx.sendMessage(ctx.partner.pEpIdent, src.getLongmsg()); - ctx.reveiveMessage(); - - counter++; - TestUtils.sleep(3000); -// TestUtils.readKey(); + while (ctx.transport.canReceiveAsync()) { + ctx.transport.sendAsync(AdapterTestUtils.newOutMessage(ctx.myself.pEpIdent, ctx.partner.pEpIdent, "UNIQUE_" + String.valueOf(counter))); + Message msg = ctx.transport.receiveAsyncNonBlocking(); + counter++; + } } }); diff --git a/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java b/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java index b6003b3..773f2fc 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java +++ b/test/java/foundation/pEp/jniadapter/test/jni153/TestBob.java @@ -1,5 +1,6 @@ package foundation.pEp.jniadapter.test.jni153; +import foundation.pEp.jniadapter.Engine; import foundation.pEp.jniadapter.Message; import foundation.pEp.jniadapter.test.utils.AdapterTestUtils; import foundation.pEp.jniadapter.test.utils.model.NodeName; @@ -7,6 +8,9 @@ import foundation.pEp.pitytest.TestSuite; import foundation.pEp.pitytest.TestUnit; import foundation.pEp.pitytest.utils.TestUtils; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + import static foundation.pEp.pitytest.TestLogger.log; class TestBob { @@ -17,24 +21,31 @@ class TestBob { CTXMultiNode JNI153Ctx = new CTXMultiNode(NodeName.NODE_B1); new TestUnit("test", JNI153Ctx, ctx -> { + ExecutorService executorService = Executors.newFixedThreadPool(10); + ctx.transport.clearOwnQueue(); ctx.myself.pEpIdent = ctx.engine.myself(ctx.myself.pEpIdent); log(AdapterTestUtils.identityToString(ctx.myself.pEpIdent, true)); - ctx.transport.clearOwnQueue(); - int counter = 0; + ctx.transport.start(); + + int counter = 0; while (true) { - TestUtils.sleep(3000); - Message msgRx = ctx.reveiveMessage(); - //Mistrust - if (counter == 1) { - log("Mistrusting"); - ctx.engine.keyMistrusted(msgRx.getFrom()); - } + while (ctx.transport.canReceiveAsync()) { + Message msgRx = ctx.transport.receiveAsyncNonBlocking(); + log(AdapterTestUtils.identityToString(msgRx.getFrom(),true)); + ctx.transport.sendAsync(AdapterTestUtils.newOutMessage(ctx.myself.pEpIdent, msgRx.getFrom(), msgRx.getLongmsg() + " - ACK")); + counter++; - ctx.sendMessage(msgRx.getFrom(), msgRx.getLongmsg() + " - ACK"); + if (counter % 4 == 0) { + executorService.submit(() -> { + Engine eng = new Engine(); + log("Mistrusting"); + eng.keyMistrusted(msgRx.getFrom()); - counter++; + }); + } + } } }); diff --git a/test/java/foundation/pEp/jniadapter/test/utils/AdapterTestUtils.java b/test/java/foundation/pEp/jniadapter/test/utils/AdapterTestUtils.java index 3fa3e08..bf058b0 100644 --- a/test/java/foundation/pEp/jniadapter/test/utils/AdapterTestUtils.java +++ b/test/java/foundation/pEp/jniadapter/test/utils/AdapterTestUtils.java @@ -338,6 +338,30 @@ public class AdapterTestUtils { return msg; } + public static Message newOutMessage(Identity from, Identity to, String longMessage) { + Message ret = new Message(); + Vector toList = new Vector<>(); + toList.add(to); + ret.setTo(toList); + ret.setFrom(from); +// ret.setShortmsg(); + ret.setLongmsg(longMessage); + ret.setDir(Message.Direction.Outgoing); + return ret; + } + +// public static Message newInMessage(Identity from, Identity to, String longMessage) { +// Message ret = new Message(); +// Vector toList = new Vector<>(); +// toList.add(to); +// ret.setTo(toList); +// ret.setFrom(from); +//// ret.setShortmsg(); +// ret.setLongmsg(longMessage); +// ret.setDir(Message.Direction.Outgoing); +// return ret; +// } + public static Message generateSourceMessage(Identity from, Identity to, long id, long longMsgLen) { Message msg = new Message(); Vector vID = new Vector();