From 0350adb4dff4afb3c35d3a5f43b0e043c20509c5 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 10:44:50 +0200 Subject: [PATCH 01/11] updated pom for integration tests --- java_socketio_chatroom_server/pom.xml | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/java_socketio_chatroom_server/pom.xml b/java_socketio_chatroom_server/pom.xml index 6559636..3031488 100755 --- a/java_socketio_chatroom_server/pom.xml +++ b/java_socketio_chatroom_server/pom.xml @@ -97,6 +97,18 @@ maven-surefire-plugin 2.22.1 + + maven-failsafe-plugin + 2.22.2 + + + + integration-test + verify + + + + maven-jar-plugin 3.0.2 @@ -139,6 +151,25 @@ + + org.codehaus.mojo + build-helper-maven-plugin + 3.2.0 + + + add-test-source + generate-test-sources + + add-test-source + + + + src/it/java + + + + + org.jacoco jacoco-maven-plugin @@ -229,5 +260,19 @@ + + integration-tests + + + + org.codehaus.mojo + build-helper-maven-plugin + + + maven-failsafe-plugin + + + + From f76b8c238d19ffc5fec174c8b6c7e989ca06f332 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 11:24:33 +0200 Subject: [PATCH 02/11] removed IT profile in pom --- java_socketio_chatroom_server/pom.xml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/java_socketio_chatroom_server/pom.xml b/java_socketio_chatroom_server/pom.xml index 3031488..2045e68 100755 --- a/java_socketio_chatroom_server/pom.xml +++ b/java_socketio_chatroom_server/pom.xml @@ -237,6 +237,13 @@ + + org.codehaus.mojo + build-helper-maven-plugin + + + maven-failsafe-plugin + @@ -260,19 +267,5 @@ - - integration-tests - - - - org.codehaus.mojo - build-helper-maven-plugin - - - maven-failsafe-plugin - - - - From cb0728c53326a5bfb2459bf70d5c3de5c919c0ad Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 12:22:54 +0200 Subject: [PATCH 03/11] added Message model class --- .../model/Message.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java new file mode 100755 index 0000000..70a15a2 --- /dev/null +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java @@ -0,0 +1,27 @@ +package io.github.marcodiri.java_socketio_chatroom_server.model; + +import java.sql.Timestamp; + +public final class Message { + private final Timestamp timestamp; + private final String user; + private final String message; + + public Message(Timestamp timestamp, String user, String message) { + this.timestamp = new Timestamp(timestamp.getTime()); + this.user = user; + this.message = message; + } + + public Timestamp getTimestamp() { + return new Timestamp(timestamp.getTime()); + } + + public String getUser() { + return user; + } + + public String getMessage() { + return message; + } +} From 7e97d9e9dca8b2c95f1606f993cdcb6b70dac538 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 13:23:22 +0200 Subject: [PATCH 04/11] Overridden Objects methods in Message --- .../model/Message.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java index 70a15a2..bf9814e 100755 --- a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/model/Message.java @@ -1,6 +1,7 @@ package io.github.marcodiri.java_socketio_chatroom_server.model; import java.sql.Timestamp; +import java.util.Objects; public final class Message { private final Timestamp timestamp; @@ -24,4 +25,29 @@ public String getUser() { public String getMessage() { return message; } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("Message{"); + sb.append("timestamp=").append(timestamp); + sb.append(", user=").append(user); + sb.append(", message=").append(message); + sb.append('}'); + return sb.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Message msg = (Message) o; + return Objects.equals(timestamp, msg.timestamp) && Objects.equals(user, msg.user) && Objects.equals(message, msg.message); + } + + @Override + public int hashCode() { + return Objects.hash(timestamp, user, message); + } } From af7fdd2ff033ce47cd0010c4a746b59ee06b1b66 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 15:55:20 +0200 Subject: [PATCH 05/11] removed IDE generated example classes --- .../java_socketio_chatroom_server/App.java | 13 ------- .../AppTest.java | 38 ------------------- 2 files changed, 51 deletions(-) delete mode 100755 java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/App.java delete mode 100755 java_socketio_chatroom_server/src/test/java/io/github/marcodiri/java_socketio_chatroom_server/AppTest.java diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/App.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/App.java deleted file mode 100755 index bbe2c98..0000000 --- a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/App.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.marcodiri.java_socketio_chatroom_server; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/java_socketio_chatroom_server/src/test/java/io/github/marcodiri/java_socketio_chatroom_server/AppTest.java b/java_socketio_chatroom_server/src/test/java/io/github/marcodiri/java_socketio_chatroom_server/AppTest.java deleted file mode 100755 index 9988600..0000000 --- a/java_socketio_chatroom_server/src/test/java/io/github/marcodiri/java_socketio_chatroom_server/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.github.marcodiri.java_socketio_chatroom_server; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} From 423bff03ced58ce85b0d914f7314deb57ad4fc17 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 16:49:09 +0200 Subject: [PATCH 06/11] pom setup for mongodb --- java_socketio_chatroom_server/pom.xml | 107 +++++++++++++++++++++++--- 1 file changed, 95 insertions(+), 12 deletions(-) diff --git a/java_socketio_chatroom_server/pom.xml b/java_socketio_chatroom_server/pom.xml index 2045e68..0e7f3bb 100755 --- a/java_socketio_chatroom_server/pom.xml +++ b/java_socketio_chatroom_server/pom.xml @@ -22,6 +22,7 @@ 0.8.7 1.6.6 4.3.0 + 3.12.8 @@ -51,6 +52,11 @@ import pom + + org.mongodb + mongo-java-driver + ${mongo.driver.version} + @@ -75,6 +81,10 @@ org.apache.logging.log4j log4j-core + + org.mongodb + mongo-java-driver + @@ -174,6 +184,37 @@ org.jacoco jacoco-maven-plugin ${jacoco.plugin.version} + + + + + prepare-agent + + report + + + + jacoco-check + + + check + + + + + PACKAGE + + + LINE + COVEREDRATIO + 1 + + + + + + + org.pitest @@ -192,6 +233,11 @@ coveralls-maven-plugin ${coveralls.plugin.version} + + io.fabric8 + docker-maven-plugin + 0.36.0 + @@ -200,12 +246,44 @@ maven-assembly-plugin - org.jacoco - jacoco-maven-plugin + maven-failsafe-plugin + + + ${mongo.mapped.port} + + - org.pitest - pitest-maven + io.fabric8 + docker-maven-plugin + + + + mongo:4.2.14 + + + mongo.mapped.port:27017 + + + + + + + + docker-start + pre-integration-test + + start + + + + docker-stop + post-integration-test + + stop + + + @@ -228,14 +306,11 @@ org.jacoco jacoco-maven-plugin - - - - prepare-agent - report - - - + + + **/model/* + + org.codehaus.mojo @@ -255,6 +330,14 @@ org.pitest pitest-maven + + + io.github.marcodiri.java_socketio_chatroom_server.model.* + + + io.github.marcodiri.java_socketio_chatroom_server.* + + verify From b4a1b6cfa5b54c49e663e02044baeffe94a11f89 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 16:53:32 +0200 Subject: [PATCH 07/11] created ServerRepository and test for findAll method --- java_socketio_chatroom_server/.classpath | 7 +++ .../org.eclipse.core.resources.prefs | 1 + .../mongo/ServerMongoRepositoryIT.java | 60 +++++++++++++++++++ .../repository/ServerRepository.java | 11 ++++ .../mongo/ServerMongoRepository.java | 47 +++++++++++++++ 5 files changed, 126 insertions(+) create mode 100755 java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java create mode 100755 java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/ServerRepository.java create mode 100755 java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java diff --git a/java_socketio_chatroom_server/.classpath b/java_socketio_chatroom_server/.classpath index 5e8a55f..8e80949 100755 --- a/java_socketio_chatroom_server/.classpath +++ b/java_socketio_chatroom_server/.classpath @@ -23,5 +23,12 @@ + + + + + + + diff --git a/java_socketio_chatroom_server/.settings/org.eclipse.core.resources.prefs b/java_socketio_chatroom_server/.settings/org.eclipse.core.resources.prefs index f9fe345..c293e5d 100755 --- a/java_socketio_chatroom_server/.settings/org.eclipse.core.resources.prefs +++ b/java_socketio_chatroom_server/.settings/org.eclipse.core.resources.prefs @@ -1,4 +1,5 @@ eclipse.preferences.version=1 +encoding//src/it/java=UTF-8 encoding//src/main/java=UTF-8 encoding//src/test/java=UTF-8 encoding/=UTF-8 diff --git a/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java b/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java new file mode 100755 index 0000000..fad4021 --- /dev/null +++ b/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java @@ -0,0 +1,60 @@ +package io.github.marcodiri.java_socketio_chatroom_server.repository.mongo; + +import static io.github.marcodiri.java_socketio_chatroom_server.repository.mongo.ServerMongoRepository.CHATROOM_DB_NAME; +import static io.github.marcodiri.java_socketio_chatroom_server.repository.mongo.ServerMongoRepository.MESSAGES_COLLECTION_NAME; + +import java.sql.Timestamp; +import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.assertThat; + +import org.bson.Document; +import org.junit.Before; +import org.junit.Test; + +import com.mongodb.MongoClient; +import com.mongodb.ServerAddress; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; + +import io.github.marcodiri.java_socketio_chatroom_server.model.Message; + +public class ServerMongoRepositoryIT { + private static int mongoPort = Integer.parseInt(System.getProperty("mongo.port", "27017")); + private MongoClient client; + private ServerMongoRepository serverRepository; + private MongoCollection messagesCollection; + + @Before + public void setup() { + client = new MongoClient( + new ServerAddress("localhost", mongoPort) + ); + serverRepository = new ServerMongoRepository(client); + MongoDatabase database = client.getDatabase(CHATROOM_DB_NAME); + database.drop(); + messagesCollection = database.getCollection(MESSAGES_COLLECTION_NAME); + } + + @Test + public void testFindAll() { + Timestamp ts1 = new Timestamp(System.currentTimeMillis()); + Timestamp ts2 = new Timestamp(System.currentTimeMillis()); + + messagesCollection.insertMany(asList( + new Document() + .append("timestamp", ts1.getTime()) + .append("user", "user1") + .append("message", "message1"), + new Document() + .append("timestamp", ts2.getTime()) + .append("user", "user2") + .append("message", "message2") + )); + + assertThat(serverRepository.findAll()) + .containsExactly( + new Message(ts1, "user1", "message1"), + new Message(ts2, "user2", "message2") + ); + } +} diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/ServerRepository.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/ServerRepository.java new file mode 100755 index 0000000..0fcf804 --- /dev/null +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/ServerRepository.java @@ -0,0 +1,11 @@ +package io.github.marcodiri.java_socketio_chatroom_server.repository; + +import java.util.List; + +import io.github.marcodiri.java_socketio_chatroom_server.model.Message; + +public interface ServerRepository { + public List findAll(); + + public void save(Message message); +} diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java new file mode 100755 index 0000000..a9b2d12 --- /dev/null +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java @@ -0,0 +1,47 @@ +package io.github.marcodiri.java_socketio_chatroom_server.repository.mongo; + +import java.sql.Timestamp; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import org.bson.Document; + +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import io.github.marcodiri.java_socketio_chatroom_server.model.Message; +import io.github.marcodiri.java_socketio_chatroom_server.repository.ServerRepository; + +public class ServerMongoRepository implements ServerRepository { + public static final String CHATROOM_DB_NAME = "chatroom"; + public static final String MESSAGES_COLLECTION_NAME = "messages"; + private MongoCollection msgCollection; + + public ServerMongoRepository(MongoClient client) { + msgCollection = client + .getDatabase(CHATROOM_DB_NAME) + .getCollection(MESSAGES_COLLECTION_NAME); + } + + @Override + public List findAll() { + return StreamSupport. + stream(msgCollection.find().spliterator(), false) + .map(this::fromDocumentToStudent) + .collect(Collectors.toList()); + } + + @Override + public void save(Message message) { + // TODO Auto-generated method stub + + } + + private Message fromDocumentToStudent(Document d) { + return new Message( + new Timestamp(Long.parseLong(d.get("timestamp").toString())), + ""+d.get("user"), + ""+d.get("message")); + } + +} From e78cc47e9e4a4e7937db816d09e2f0a139d03652 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 17:40:43 +0200 Subject: [PATCH 08/11] test for save method --- .../mongo/ServerMongoRepositoryIT.java | 21 ++++++++++++++++++- .../mongo/ServerMongoRepository.java | 7 +++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java b/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java index fad4021..344608b 100755 --- a/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java +++ b/java_socketio_chatroom_server/src/it/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepositoryIT.java @@ -4,9 +4,12 @@ import static io.github.marcodiri.java_socketio_chatroom_server.repository.mongo.ServerMongoRepository.MESSAGES_COLLECTION_NAME; import java.sql.Timestamp; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; - import org.bson.Document; import org.junit.Before; import org.junit.Test; @@ -57,4 +60,20 @@ public void testFindAll() { new Message(ts2, "user2", "message2") ); } + + @Test + public void testSave() { + Message msg = new Message(new Timestamp(System.currentTimeMillis()), "user", "message"); + serverRepository.save(msg); + assertThat(readAllMessages()).containsExactly(msg); + } + + private List readAllMessages() { + return StreamSupport.stream(messagesCollection.find().spliterator(), false) + .map(d -> new Message( + new Timestamp(Long.parseLong(d.get("timestamp").toString())), + "" + d.get("user"), + "" + d.get("message"))) + .collect(Collectors.toList()); + } } diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java index a9b2d12..9bb1afb 100755 --- a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java @@ -33,8 +33,11 @@ public List findAll() { @Override public void save(Message message) { - // TODO Auto-generated method stub - + msgCollection.insertOne( + new Document() + .append("timestamp", message.getTimestamp().getTime()) + .append("user", message.getUser()) + .append("message", message.getMessage())); } private Message fromDocumentToStudent(Document d) { From 6984f2c583ae0f3ad727321d1eabebcba2f23873 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Wed, 26 May 2021 18:14:17 +0200 Subject: [PATCH 09/11] changed method name --- .../repository/mongo/ServerMongoRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java index 9bb1afb..90c81e2 100755 --- a/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java +++ b/java_socketio_chatroom_server/src/main/java/io/github/marcodiri/java_socketio_chatroom_server/repository/mongo/ServerMongoRepository.java @@ -27,7 +27,7 @@ public ServerMongoRepository(MongoClient client) { public List findAll() { return StreamSupport. stream(msgCollection.find().spliterator(), false) - .map(this::fromDocumentToStudent) + .map(this::fromDocumentToMessage) .collect(Collectors.toList()); } @@ -40,7 +40,7 @@ public void save(Message message) { .append("message", message.getMessage())); } - private Message fromDocumentToStudent(Document d) { + private Message fromDocumentToMessage(Document d) { return new Message( new Timestamp(Long.parseLong(d.get("timestamp").toString())), ""+d.get("user"), From c8f3ce4867e10b87279facf1345b143f99cd0202 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Thu, 27 May 2021 10:00:23 +0200 Subject: [PATCH 10/11] fixed pitest not running correctly --- java_socketio_chatroom_server/pom.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/java_socketio_chatroom_server/pom.xml b/java_socketio_chatroom_server/pom.xml index bc95c64..34c39d0 100755 --- a/java_socketio_chatroom_server/pom.xml +++ b/java_socketio_chatroom_server/pom.xml @@ -317,11 +317,10 @@ maven-failsafe-plugin - - - ${mongo.mapped.port} - - + + io.fabric8 @@ -332,7 +331,8 @@ mongo:4.2.14 - mongo.mapped.port:27017 + + 27017:27017 @@ -412,7 +412,7 @@ - verify + integration-test mutationCoverage From 19abf90125b485c7441ed48b7776c1ab9d77ce14 Mon Sep 17 00:00:00 2001 From: marcodiri Date: Thu, 27 May 2021 11:53:40 +0200 Subject: [PATCH 11/11] explicitly excluded Message class from coverage --- java_socketio_chatroom_server/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java_socketio_chatroom_server/pom.xml b/java_socketio_chatroom_server/pom.xml index 34c39d0..00e3d5e 100755 --- a/java_socketio_chatroom_server/pom.xml +++ b/java_socketio_chatroom_server/pom.xml @@ -378,7 +378,7 @@ jacoco-maven-plugin - **/model/* + **/Message.* **/ServerWrapper.* **/ServerWrapper$*.*