[ https://issues.apache.org/jira/browse/FLINK-21324?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timur updated FLINK-21324: -------------------------- Description: Assertions don't work for messages sent by functions to themselves. The reason is that TestContext doesn't add a message to responses: {code:java} @Override public void send(Address to, Object message) { if (to.equals(selfAddress)) { messages.add(new Envelope(self(), to, message)); return; } responses.computeIfAbsent(to, ignore -> new ArrayList<>()).add(message); } {code} Instead of adding the message to responses the method returns right after message added to messages. Here is the example of the assertion that doesn't work in case a function sent a message to itself: {code:java} assertThat(harness.invoke(aliceDiseaseDiagnosedEvent()), sentNothing()); {code} The test won't fail even though the message was really sent. was: Assertions don't work for messages sent by functions to themselves. The reason is that TestContext doesn't add a message to responses: {code:java} @Override public void send(Address to, Object message) { if (to.equals(selfAddress)) { messages.add(new Envelope(self(), to, message)); return; } responses.computeIfAbsent(to, ignore -> new ArrayList<>()).add(message); } {code} Instead of adding the message to responses the method returns right after message added to messages. Here is the example of the assertion that doesn't work in case a function sent a message to itself: {code:java} assertThat(harness.invoke(aliceDiseaseDiagnosedEvent()), sentNothing()); {code} The test won't fail even though the message was really sent. > statefun-testutil can't assert messages function sends to itself > ---------------------------------------------------------------- > > Key: FLINK-21324 > URL: https://issues.apache.org/jira/browse/FLINK-21324 > Project: Flink > Issue Type: Bug > Components: Stateful Functions > Affects Versions: statefun-2.2.2 > Reporter: Timur > Priority: Major > > Assertions don't work for messages sent by functions to themselves. The > reason is that TestContext doesn't add a message to responses: > {code:java} > @Override > public void send(Address to, Object message) { > if (to.equals(selfAddress)) { > messages.add(new Envelope(self(), to, message)); > return; > } > responses.computeIfAbsent(to, ignore -> new ArrayList<>()).add(message); > } > {code} > Instead of adding the message to responses the method returns right after > message added to messages. > Here is the example of the assertion that doesn't work in case a function > sent a message to itself: > {code:java} > assertThat(harness.invoke(aliceDiseaseDiagnosedEvent()), sentNothing()); > {code} > The test won't fail even though the message was really sent. -- This message was sent by Atlassian Jira (v8.3.4#803005)