Stepping to springboot 3 30/10630/1
authorPatrikBuhr <patrik.buhr@est.tech>
Wed, 1 Mar 2023 12:16:38 +0000 (13:16 +0100)
committerPatrikBuhr <patrik.buhr@est.tech>
Wed, 1 Mar 2023 12:16:38 +0000 (13:16 +0100)
Upgrading to java 17.

Signed-off-by: PatrikBuhr <patrik.buhr@est.tech>
Issue-ID: NONRTRIC-840
Change-Id: I40e72f5d7ab09222bf0ea076163e00f2896290e8

pmlog/Dockerfile
pmlog/api/pmlog-api.json
pmlog/api/pmlog-api.yaml
pmlog/pom.xml
pmlog/src/main/java/org/oran/pmlog/InfluxStore.java
pmlog/src/main/java/org/oran/pmlog/PmReport.java
pmlog/src/test/java/org/oran/pmlog/IcsSimulatorController.java
pmlog/src/test/java/org/oran/pmlog/Integration.java

index d5dc1fb..c1d6be5 100644 (file)
@@ -20,7 +20,7 @@
 # ============LICENSE_END=========================================================
 
 
-FROM openjdk:11-jre-slim
+FROM openjdk:17-jdk-slim
 
 EXPOSE 8084 8435
 
index 560c8da..4ad7230 100644 (file)
     "paths": {
         "/actuator/threaddump": {"get": {
             "summary": "Actuator web endpoint 'threaddump'",
-            "operationId": "threaddump_4",
+            "operationId": "threaddump",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "text/plain;charset=UTF-8": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/info": {"get": {
             "summary": "Actuator web endpoint 'info'",
-            "operationId": "info_2",
+            "operationId": "info",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/loggers": {"get": {
             "summary": "Actuator web endpoint 'loggers'",
-            "operationId": "loggers_2",
+            "operationId": "loggers",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/health/**": {"get": {
             "summary": "Actuator web endpoint 'health-path'",
-            "operationId": "health-path_2",
+            "operationId": "health-path",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/shutdown": {"post": {
             "summary": "Actuator web endpoint 'shutdown'",
-            "operationId": "shutdown_2",
+            "operationId": "shutdown",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/metrics/{requiredMetricName}": {"get": {
             "summary": "Actuator web endpoint 'metrics-requiredMetricName'",
-            "operationId": "metrics-requiredMetricName_2",
+            "operationId": "metrics-requiredMetricName",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "parameters": [{
                 "schema": {"type": "string"},
         }},
         "/actuator": {"get": {
             "summary": "Actuator root web endpoint",
-            "operationId": "links_1",
+            "operationId": "links",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {
-                    "additionalProperties": {
-                        "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
                         "type": "object"
-                    },
-                    "type": "object"
-                }}}
+                    }},
+                    "application/json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
+                        "type": "object"
+                    }},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
+                        "type": "object"
+                    }}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/logfile": {"get": {
             "summary": "Actuator web endpoint 'logfile'",
-            "operationId": "logfile_2",
+            "operationId": "logfile",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}}
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/loggers/{name}": {
             "post": {
                 "summary": "Actuator web endpoint 'loggers-name'",
-                "operationId": "loggers-name_3",
+                "requestBody": {"content": {"application/json": {"schema": {
+                    "type": "string",
+                    "enum": [
+                        "TRACE",
+                        "DEBUG",
+                        "INFO",
+                        "WARN",
+                        "ERROR",
+                        "FATAL",
+                        "OFF"
+                    ]
+                }}}},
+                "operationId": "loggers-name_2",
                 "responses": {"200": {
                     "description": "OK",
                     "content": {"*/*": {"schema": {"type": "object"}}}
             },
             "get": {
                 "summary": "Actuator web endpoint 'loggers-name'",
-                "operationId": "loggers-name_4",
+                "operationId": "loggers-name",
                 "responses": {"200": {
                     "description": "OK",
-                    "content": {"*/*": {"schema": {"type": "object"}}}
+                    "content": {
+                        "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                        "application/json": {"schema": {"type": "object"}},
+                        "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                    }
                 }},
                 "parameters": [{
                     "schema": {"type": "string"},
         },
         "/actuator/health": {"get": {
             "summary": "Actuator web endpoint 'health'",
-            "operationId": "health_2",
+            "operationId": "health",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/metrics": {"get": {
             "summary": "Actuator web endpoint 'metrics'",
-            "operationId": "metrics_2",
+            "operationId": "metrics",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
             }},
             "tags": ["Actuator"]
         }},
         "/actuator/heapdump": {"get": {
             "summary": "Actuator web endpoint 'heapdump'",
-            "operationId": "heapdump_2",
+            "operationId": "heapdump",
             "responses": {"200": {
                 "description": "OK",
-                "content": {"*/*": {"schema": {"type": "object"}}}
+                "content": {"application/octet-stream": {"schema": {"type": "object"}}}
             }},
             "tags": ["Actuator"]
         }}
         "title": "PM Logger",
         "version": "1.0"
     },
-    "tags": [
-        {"name": "Information Coordinator Service Simulator (exists only in test)"},
-        {
-            "name": "Actuator",
-            "description": "Monitor and interact",
-            "externalDocs": {
-                "description": "Spring Boot Actuator Web API Documentation",
-                "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
-            }
+    "tags": [{
+        "name": "Actuator",
+        "description": "Monitor and interact",
+        "externalDocs": {
+            "description": "Spring Boot Actuator Web API Documentation",
+            "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
         }
-    ]
+    }]
 }
\ No newline at end of file
index 5dec51b..638f2bb 100644 (file)
@@ -10,7 +10,6 @@ info:
 servers:
 - url: /
 tags:
-- name: Information Coordinator Service Simulator (exists only in test)
 - name: Actuator
   description: Monitor and interact
   externalDocs:
@@ -22,12 +21,21 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'threaddump'
-      operationId: threaddump_4
+      operationId: threaddump
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            text/plain;charset=UTF-8:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/info:
@@ -35,12 +43,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'info'
-      operationId: info_2
+      operationId: info
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/loggers:
@@ -48,12 +62,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'loggers'
-      operationId: loggers_2
+      operationId: loggers
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/health/**:
@@ -61,12 +81,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'health-path'
-      operationId: health-path_2
+      operationId: health-path
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/shutdown:
@@ -74,12 +100,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'shutdown'
-      operationId: shutdown_2
+      operationId: shutdown
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/metrics/{requiredMetricName}:
@@ -87,7 +119,7 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'metrics-requiredMetricName'
-      operationId: metrics-requiredMetricName_2
+      operationId: metrics-requiredMetricName
       parameters:
       - name: requiredMetricName
         in: path
@@ -100,7 +132,13 @@ paths:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator:
@@ -108,12 +146,26 @@ paths:
       tags:
       - Actuator
       summary: Actuator root web endpoint
-      operationId: links_1
+      operationId: links
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+                additionalProperties:
+                  type: object
+                  additionalProperties:
+                    $ref: '#/components/schemas/Link'
+            application/json:
+              schema:
+                type: object
+                additionalProperties:
+                  type: object
+                  additionalProperties:
+                    $ref: '#/components/schemas/Link'
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
                 additionalProperties:
@@ -125,12 +177,12 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'logfile'
-      operationId: logfile_2
+      operationId: logfile
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            text/plain;charset=UTF-8:
               schema:
                 type: object
   /data-consumer/v1/info-jobs/{infoJobId}:
@@ -164,7 +216,7 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'loggers-name'
-      operationId: loggers-name_4
+      operationId: loggers-name
       parameters:
       - name: name
         in: path
@@ -177,14 +229,20 @@ paths:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
     post:
       tags:
       - Actuator
       summary: Actuator web endpoint 'loggers-name'
-      operationId: loggers-name_3
+      operationId: loggers-name_2
       parameters:
       - name: name
         in: path
@@ -193,6 +251,19 @@ paths:
         explode: false
         schema:
           type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: string
+              enum:
+              - TRACE
+              - DEBUG
+              - INFO
+              - WARN
+              - ERROR
+              - FATAL
+              - OFF
       responses:
         200:
           description: OK
@@ -205,12 +276,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'health'
-      operationId: health_2
+      operationId: health
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/metrics:
@@ -218,12 +295,18 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'metrics'
-      operationId: metrics_2
+      operationId: metrics
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/vnd.spring-boot.actuator.v3+json:
+              schema:
+                type: object
+            application/json:
+              schema:
+                type: object
+            application/vnd.spring-boot.actuator.v2+json:
               schema:
                 type: object
   /actuator/heapdump:
@@ -231,12 +314,12 @@ paths:
       tags:
       - Actuator
       summary: Actuator web endpoint 'heapdump'
-      operationId: heapdump_2
+      operationId: heapdump
       responses:
         200:
           description: OK
           content:
-            '*/*':
+            application/octet-stream:
               schema:
                 type: object
 components:
index c423060..89f9902 100644 (file)
 <project
     xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.8</version>
+        <version>3.0.3</version>
         <relativePath />
     </parent>
     <groupId>org.o-ran-sc.nonrtric.plt</groupId>
         </repository>
     </repositories>
     <properties>
-        <java.version>11</java.version>
-        <springfox.version>3.0.0</springfox.version>
+        <java.version>17</java.version>
         <gson.version>2.9.0</gson.version>
-        <swagger.version>2.2.1</swagger.version>
         <json.version>20211205</json.version>
         <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
         <formatter-maven-plugin.version>2.12.2</formatter-maven-plugin.version>
         <sonar-maven-plugin.version>3.7.0.1746</sonar-maven-plugin.version>
         <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
         <swagger-codegen-maven-plugin.version>3.0.11</swagger-codegen-maven-plugin.version>
+        <springdoc.version>2.0.2</springdoc.version>
         <exec.skip>true</exec.skip>
     </properties>
     <dependencies>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+            <version>${springdoc.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>${springdoc.version}</version>
+        </dependency>
         <dependency>
             <groupId>com.influxdb</groupId>
             <artifactId>influxdb-client-java</artifactId>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webflux</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.swagger.core.v3</groupId>
-            <artifactId>swagger-jaxrs2</artifactId>
-            <version>${swagger.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.swagger.core.v3</groupId>
-            <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
-            <version>${swagger.version}</version>
-        </dependency>
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-        <!--REQUIRED TO GENERATE DOCUMENTATION -->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-            <version>${springfox.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-            <version>${springfox.version}</version>
-        </dependency>
         <!-- For development help -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
index 7462e9a..ba9f21c 100644 (file)
@@ -105,11 +105,6 @@ public class InfluxStore {
         return measInfoList.getMeasTypes().getMeasType(measResult.getP());
     }
 
-    private String fdn(PmReport report, PmReport.MeasValuesList measValueList) {
-        return report.event.getPerf3gppFields().getMeasDataCollection().getMeasuredEntityDn() + ","
-                + measValueList.getMeasObjInstId();
-    }
-
     private void addCounterFieldToPoint(Point point, PmReport.MeasInfoList measInfoList,
             PmReport.MeasValuesList measValueList, PmReport.MeasResult measResult) {
         String measType = measType(measResult, measInfoList);
@@ -137,7 +132,8 @@ public class InfluxStore {
                 if (measValueList.getSuspectFlag().equals("true")) {
                     continue;
                 }
-                Point point = Point.measurement(fdn(report, measValueList)).time(endTime(report), WritePrecision.MS);
+                Point point = Point.measurement(report.fullDistinguishedName(measValueList)).time(endTime(report),
+                        WritePrecision.MS);
 
                 point.addField("GranularityPeriod", measDataCollection.getGranularityPeriod());
 
index bf80d66..3b10245 100644 (file)
@@ -29,7 +29,6 @@ import lombok.Builder;
 import lombok.Getter;
 import lombok.Setter;
 
-
 @Builder(toBuilder = true)
 public class PmReport {
 
@@ -45,6 +44,11 @@ public class PmReport {
         return event.commonEventHeader.lastEpochMicrosec / 1000;
     }
 
+    public String fullDistinguishedName(PmReport.MeasValuesList measValueList) {
+        return event.getPerf3gppFields().getMeasDataCollection().getMeasuredEntityDn() + ","
+                + measValueList.getMeasObjInstId();
+    }
+
     @Expose
     public Event event;
 
index e04655d..918733e 100644 (file)
@@ -69,9 +69,14 @@ public class IcsSimulatorController {
             @PathVariable("infoJobId") String jobId, //
             @RequestBody String body) {
         logger.debug("*** added consumer job {}", jobId);
-        ConsumerJobInfo informationJobObject = gson.fromJson(body, ConsumerJobInfo.class);
-        testResults.setCreatedJob(informationJobObject);
-        return new ResponseEntity<>(HttpStatus.OK);
+        try {
+            ConsumerJobInfo informationJobObject = gson.fromJson(body, ConsumerJobInfo.class);
+            testResults.setCreatedJob(informationJobObject);
+            return new ResponseEntity<>(HttpStatus.OK);
+        } catch (Exception e) {
+            logger.error("Received malformed data: {}, {}", body, e.getMessage());
+            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+        }
     }
 
 }
index ca1fdd2..840298d 100644 (file)
@@ -138,7 +138,7 @@ class Integration {
         Thread.sleep(4000);
     }
 
-    private String generateCounterValue(int sequenceValue, int noOfObjects, String counterName) {
+    private String generateCounterValue(int sequenceValue, int noOfObjects, String counterName, String resourceFdn) {
         long value = (random.nextInt() % 100) * sequenceValue + (counterName.hashCode() % 5000);
         return Long.toString(value);
     }
@@ -172,12 +172,12 @@ class Integration {
 
             setEndTime(report, sequenceValue, noOfObjects);
 
-            // Fill it with random values
+            // Fill it with generated values
             for (PmReport.MeasInfoList measInfoList : measDataCollection.getMeasInfoList()) {
                 for (PmReport.MeasValuesList measValueList : measInfoList.getMeasValuesList()) {
                     for (PmReport.MeasResult measResult : measValueList.getMeasResults()) {
                         String value = this.generateCounterValue(sequenceValue, noOfObjects,
-                                measType(measResult, measInfoList));
+                                measType(measResult, measInfoList), report.fullDistinguishedName(measValueList));
                         measResult.setSValue(value);
                     }
                 }