From 33291bf738fb7a7f74e22da6968f361b3742c27f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hallvard=20Tr=C3=A6tteberg?= <hal@ntnu.no>
Date: Mon, 12 Oct 2020 15:36:11 +0000
Subject: [PATCH] Logging og port-bruk

---
 .../java/todolist/ui/TodoModelController.java |  1 -
 todolist/integrationtests/pom.xml             | 42 +++++++++++++++----
 .../main/resources/simplelogger.properties    |  4 ++
 .../src/test/java/todolist/ui/TodoAppIT.java  | 13 +++---
 .../todolist/restapi/TodoListResource.java    |  4 +-
 .../java/todolist/restserver/TodoConfig.java  |  2 -
 6 files changed, 49 insertions(+), 17 deletions(-)
 create mode 100644 todolist/integrationtests/src/main/resources/simplelogger.properties

diff --git a/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java b/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
index 3ee5505..0de7779 100644
--- a/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
+++ b/todolist/fxui/src/main/java/todolist/ui/TodoModelController.java
@@ -6,7 +6,6 @@ import java.util.Objects;
 import javafx.fxml.FXML;
 import javafx.scene.control.ComboBox;
 import todolist.core.TodoList;
-import todolist.json.TodoPersistence;
 
 public class TodoModelController {
 
diff --git a/todolist/integrationtests/pom.xml b/todolist/integrationtests/pom.xml
index fac265c..5defffc 100644
--- a/todolist/integrationtests/pom.xml
+++ b/todolist/integrationtests/pom.xml
@@ -80,15 +80,24 @@
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
             </plugin>
+
+            <!-- Reservere porter og tilordne dem til variabler -->
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <version>3.0.0-M1</version>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.2.0</version>
+                <configuration>
+                    <portNames>
+                        <portName>jetty.port</portName>
+                        <portName>jetty.port.stop</portName>
+                    </portNames>
+                </configuration>
                 <executions>
                     <execution>
+                        <id>reserve-port</id>
+                        <phase>pre-integration-test</phase>
                         <goals>
-                            <goal>integration-test</goal>
-                            <goal>verify</goal>
+                            <goal>reserve-network-port</goal>
                         </goals>
                     </execution>
                 </executions>
@@ -99,10 +108,10 @@
                 <version>9.4.31.v20200723</version>
                 <configuration>
                     <httpConnector>
-                        <port>8999</port>
+                        <port>${jetty.port}</port>
                     </httpConnector>
                     <stopKey>quit</stopKey>
-                    <stopPort>9000</stopPort>
+                    <stopPort>${jetty.port.stop}</stopPort>
                 </configuration>
                 <executions>
                     <execution>
@@ -121,6 +130,25 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>3.0.0-M1</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                        <configuration>
+                            <!-- System.getProperty("todo.port") gir riktig port -->
+                            <systemPropertyVariables>
+                                <todo.port>${jetty.port}</todo.port>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/todolist/integrationtests/src/main/resources/simplelogger.properties b/todolist/integrationtests/src/main/resources/simplelogger.properties
new file mode 100644
index 0000000..01c3102
--- /dev/null
+++ b/todolist/integrationtests/src/main/resources/simplelogger.properties
@@ -0,0 +1,4 @@
+# http://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html
+
+org.slf4j.simpleLogger.defaultLogLevel=INFO
+org.slf4j.simpleLogger.log.todolist.restapi=DEBUG
diff --git a/todolist/integrationtests/src/test/java/todolist/ui/TodoAppIT.java b/todolist/integrationtests/src/test/java/todolist/ui/TodoAppIT.java
index 23b1c04..659860a 100644
--- a/todolist/integrationtests/src/test/java/todolist/ui/TodoAppIT.java
+++ b/todolist/integrationtests/src/test/java/todolist/ui/TodoAppIT.java
@@ -10,6 +10,8 @@ import static org.junit.jupiter.api.Assertions.fail;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.net.URI;
+import java.net.URISyntaxException;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.testfx.framework.junit5.ApplicationTest;
@@ -26,15 +28,16 @@ public class TodoAppIT extends ApplicationTest {
     stage.setScene(new Scene(root));
     stage.show();
   }
-  
-  private TodoPersistence todoPersistence = new TodoPersistence();
 
   @BeforeEach
-  public void setupItems() {
+  public void setupItems() throws URISyntaxException {
     // same as in test-todolist.json (should perhaps read it instead)
     try (Reader reader = new InputStreamReader(getClass().getResourceAsStream("it-todomodel.json"))) {
-      // TODO: implement and use remote todo model access
-      this.controller.setTodoModelAccess(new DirectTodoModelAccess(todoPersistence.readTodoModel(reader)));
+      String port = System.getProperty("todo.port");
+      assertNotNull(port, "No todo.port system property set");
+      URI baseUri = new URI("http://localhost:" + port + "/todo/");
+      System.out.println("Base RemoteTodoModelAcces URI: " + baseUri);
+      this.controller.setTodoModelAccess(new RemoteTodoModelAccess(baseUri));
     } catch (IOException ioe) {
       fail(ioe.getMessage());
     }
diff --git a/todolist/restapi/src/main/java/todolist/restapi/TodoListResource.java b/todolist/restapi/src/main/java/todolist/restapi/TodoListResource.java
index 9b40de1..850234b 100644
--- a/todolist/restapi/src/main/java/todolist/restapi/TodoListResource.java
+++ b/todolist/restapi/src/main/java/todolist/restapi/TodoListResource.java
@@ -45,7 +45,7 @@ public class TodoListResource {
   @Produces(MediaType.APPLICATION_JSON)
   public TodoList getTodoList() {
     checkTodoList();
-    LOG.debug("getTodoList(%s)", name);
+    LOG.debug("getTodoList({})", name);
     return this.todoList;
   }
 
@@ -59,7 +59,7 @@ public class TodoListResource {
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public boolean putTodoList(TodoList todoListArg) {
-    LOG.debug("putTodoList(%s)", todoListArg);
+    LOG.debug("putTodoList({})", todoListArg);
     return this.todoModel.putTodoList(todoListArg) == null;
   }
 
diff --git a/todolist/restserver/src/main/java/todolist/restserver/TodoConfig.java b/todolist/restserver/src/main/java/todolist/restserver/TodoConfig.java
index 6fb60e9..f01ab81 100644
--- a/todolist/restserver/src/main/java/todolist/restserver/TodoConfig.java
+++ b/todolist/restserver/src/main/java/todolist/restserver/TodoConfig.java
@@ -7,8 +7,6 @@ import java.nio.charset.StandardCharsets;
 import org.glassfish.hk2.utilities.binding.AbstractBinder;
 import org.glassfish.jersey.jackson.JacksonFeature;
 import org.glassfish.jersey.server.ResourceConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import todolist.core.TodoList;
 import todolist.core.TodoModel;
 import todolist.json.TodoPersistence;
-- 
GitLab