diff options
author | Keguang He <hekeguang@chinamobile.com> | 2022-08-08 01:55:57 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2022-08-08 01:55:57 +0000 |
commit | bedfcff8f80b0adc6df7bc051b82458fef4446f0 (patch) | |
tree | 9a4f436ae1d87911b5669f6aa109fa3242d8c203 | |
parent | 40d95f90d0740982a8a22e2ae318b4a8236ea3ba (diff) | |
parent | c63412acfab7c50803bdd0dcf848b3a91b3f565f (diff) |
Merge "Add unit test for intent analysis"
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) +); |