summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeguang He <hekeguang@chinamobile.com>2022-08-08 01:55:57 +0000
committerGerrit Code Review <gerrit@onap.org>2022-08-08 01:55:57 +0000
commitbedfcff8f80b0adc6df7bc051b82458fef4446f0 (patch)
tree9a4f436ae1d87911b5669f6aa109fa3242d8c203
parent40d95f90d0740982a8a22e2ae318b4a8236ea3ba (diff)
parentc63412acfab7c50803bdd0dcf848b3a91b3f565f (diff)
Merge "Add unit test for intent analysis"
-rw-r--r--intentanalysis/pom.xml71
-rw-r--r--intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java44
-rw-r--r--intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java53
-rw-r--r--intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java56
-rw-r--r--intentanalysis/src/test/resources/application.yaml44
-rw-r--r--intentanalysis/src/test/resources/intentdb-test-data.sql22
-rw-r--r--intentanalysis/src/test/resources/intentdb-test-init.sql42
7 files changed, 331 insertions, 1 deletions
diff --git a/intentanalysis/pom.xml b/intentanalysis/pom.xml
index 03a4731..88c5de6 100644
--- a/intentanalysis/pom.xml
+++ b/intentanalysis/pom.xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2022 Huawei Technologies Co., Ltd. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
<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">
<modelVersion>4.0.0</modelVersion>
@@ -24,6 +39,8 @@
<sonar.jacoco.reportMissing.force.zero>true</sonar.jacoco.reportMissing.force.zero>
<sonar.projectVersion>${project.version}</sonar.projectVersion>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
+ <junit.vintage.version>5.9.0-RC1</junit.vintage.version>
+ <junit.platform.version>1.9.0-RC1</junit.platform.version>
</properties>
<dependencyManagement>
@@ -94,8 +111,60 @@
<artifactId>javax.persistence</artifactId>
<version>2.1.0</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.13</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <version>${junit.vintage.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <version>${junit.platform.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-commons</artifactId>
+ <version>${junit.platform.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-engine</artifactId>
+ <version>${junit.platform.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit-coverage</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>4.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>2.0.206</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
-
<build>
<plugins>
<plugin>
diff --git a/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java b/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java
new file mode 100644
index 0000000..e504858
--- /dev/null
+++ b/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2022 Huawei Technologies Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.usecaseui.intentanalysis.util;
+
+import org.springframework.context.ApplicationContext;
+
+public class SpringContextUtil {
+
+ private SpringContextUtil() {
+ throw new IllegalStateException("SpringContextUtil class");
+ }
+
+ private static ApplicationContext applicationContext;
+
+ public static ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ public static void setApplicationContext(ApplicationContext applicationContext) {
+ SpringContextUtil.applicationContext = applicationContext;
+ }
+
+ public static Object getBean(String name) {
+ return applicationContext.getBean(name);
+ }
+
+ public static Object getBean(Class<?> requiredType) {
+ return applicationContext.getBean(requiredType);
+ }
+}
diff --git a/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java
new file mode 100644
index 0000000..529f08d
--- /dev/null
+++ b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2022 Huawei Technologies Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.onap.usecaseui.intentanalysis.test;
+
+import java.io.IOException;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.mybatis.spring.annotation.MapperScan;
+import org.onap.usecaseui.intentanalysis.util.SpringContextUtil;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+@SpringBootApplication(exclude = {SecurityAutoConfiguration.class}, scanBasePackages = "org.onap.usecaseui.intentanalysis")
+@MapperScan(basePackages = {"org.onap.usecaseui.intentanalysis.mapper"})
+@EnableScheduling
+
+public class IntentAnalysisApplicationTests {
+
+ public static void main(String[] args) throws Exception {
+ ApplicationContext applicationContext = SpringApplication.run(IntentAnalysisApplicationTests.class, args);
+ SpringContextUtil.setApplicationContext(applicationContext);
+ }
+
+ @Bean
+ public OncePerRequestFilter accessTokenFilter() {
+ return new OncePerRequestFilter() {
+ @Override
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
+ FilterChain filterChain) throws ServletException, IOException {
+ filterChain.doFilter(request, response);
+ }
+ };
+ }
+}
diff --git a/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java
new file mode 100644
index 0000000..3a692c0
--- /dev/null
+++ b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2022 Huawei Technologies Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.onap.usecaseui.intentanalysis.test.service;
+
+import java.io.IOException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.usecaseui.intentanalysis.bean.models.Intent;
+import org.onap.usecaseui.intentanalysis.service.IntentService;
+import org.onap.usecaseui.intentanalysis.test.IntentAnalysisApplicationTests;
+import org.onap.usecaseui.intentanalysis.util.SpringContextUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest(classes = IntentAnalysisApplicationTests.class)
+@RunWith(SpringRunner.class)
+public class IntentServiceTest extends AbstractJUnit4SpringContextTests {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(IntentServiceTest.class);
+
+ @Autowired
+ private IntentService intentService;
+
+ @Before
+ public void setUp() {
+ SpringContextUtil.setApplicationContext(applicationContext);
+ }
+
+ @Test
+ public void testCreateIntentSuccess() throws IOException {
+ Intent intent = new Intent();
+ intent.setIntentId("testUUID");
+ intent.setIntentName("testIntentName");
+ //ToDo
+ //Intent intentTmp = intentService.createIntent(intent);
+ Assert.assertNotNull(intent);
+ }
+}
diff --git a/intentanalysis/src/test/resources/application.yaml b/intentanalysis/src/test/resources/application.yaml
new file mode 100644
index 0000000..8ddc4d8
--- /dev/null
+++ b/intentanalysis/src/test/resources/application.yaml
@@ -0,0 +1,44 @@
+#
+# Copyright 2022 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+###pgsql config######
+server:
+ port: 8087
+ ssl:
+ enabled: ${SSL_ENABLED:false}
+ key-store: ${SSL_KEY_STORE_PATH:}
+ key-store-password: ${SSL_KEY_STORE_PASSWORD:}
+ key-store-type: ${SSL_KEY_STORE_TYPE:}
+ key-alias: ${SSL_KEY_ALIAS:}
+spring:
+ datasource:
+ url: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=PostgreSQL
+ username:
+ password:
+ driver-class-name: org.h2.Driver
+ schema: classpath:intentdb-test-init.sql
+ data: classpath:intentdb-test-data.sql
+ main:
+ allow-bean-definition-overriding: true
+
+###mybtis####
+mybatis:
+ mapper-locations: classpath:mybatis/sql/*.xml
+security:
+ oauth2:
+ resource:
+ jwt:
+ key-value: test
diff --git a/intentanalysis/src/test/resources/intentdb-test-data.sql b/intentanalysis/src/test/resources/intentdb-test-data.sql
new file mode 100644
index 0000000..14cbefc
--- /dev/null
+++ b/intentanalysis/src/test/resources/intentdb-test-data.sql
@@ -0,0 +1,22 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : 1
+ Source Server Type : PostgreSQL
+ Source Server Version : 100011
+ Source Host : localhost:5432
+ Source Catalog : exampledb
+ Source Schema : mec
+
+ Target Server Type : PostgreSQL
+ Target Server Version : 100011
+ File Encoding : 65001
+
+ Date: 26/07/2022 10:12:23
+*/
+
+-- ----------------------------
+MERGE INTO intent (intent_id, intent_name)KEY(intent_id)values ('1234','test-intent');
+
+
+MERGE INTO expectation (expectation_id, expectation_name, target_moi, intent_id)KEY(expectation_id)values ('2234','test-expectation',null, '1234');
diff --git a/intentanalysis/src/test/resources/intentdb-test-init.sql b/intentanalysis/src/test/resources/intentdb-test-init.sql
new file mode 100644
index 0000000..b84f8e3
--- /dev/null
+++ b/intentanalysis/src/test/resources/intentdb-test-init.sql
@@ -0,0 +1,42 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : 1
+ Source Server Type : PostgreSQL
+ Source Server Version : 100011
+ Source Host : localhost:5432
+ Source Catalog : exampledb
+ Source Schema : mec
+
+ Target Server Type : PostgreSQL
+ Target Server Version : 100011
+ File Encoding : 65001
+
+ Date: 30/12/2019 14:40:23
+*/
+DROP TABLE IF EXISTS intent;
+DROP TABLE IF EXISTS expectation;
+DROP TABLE IF EXISTS state;
+
+CREATE TABLE if NOT EXISTS intent(
+ intent_id varchar(255),
+ intent_name varchar(255),
+ CONSTRAINT intent_test_task_pkey PRIMARY KEY (intent_id)
+);
+
+create table if not exists expectation(
+ expectation_id varchar(255),
+ expectation_name varchar(255),
+ target_moi varchar(255),
+ intent_id varchar(255),
+ CONSTRAINT expectation_test_task_pkey PRIMARY KEY (expectation_id)
+);
+
+create table if not exists state(
+ state_id varchar(255),
+ state_name varchar(255),
+ is_satisfied boolean,
+ condition varchar(255),
+ expectation_id varchar(255),
+ CONSTRAINT state_test_task_pkey PRIMARY KEY (state_id)
+);