72a957f45a9f3fbbe7ea3e73e1a0691ec2ffb495
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.global_tests.jmeter;
22
23 import java.io.FileInputStream;
24 import java.io.IOException;
25 import java.lang.reflect.Method;
26 import java.nio.file.Files;
27 import java.nio.file.Paths;
28 import java.nio.file.StandardCopyOption;
29
30 import org.apache.jmeter.engine.StandardJMeterEngine;
31 import org.apache.jmeter.save.SaveService;
32 import org.apache.jmeter.util.JMeterUtils;
33 import org.apache.jorphan.collections.HashTree;
34 import org.jboss.arquillian.container.test.api.Deployment;
35 import org.jboss.arquillian.container.test.api.RunAsClient;
36 import org.jboss.arquillian.container.test.api.Testable;
37 import org.jboss.arquillian.junit.Arquillian;
38 import org.jboss.shrinkwrap.api.Archive;
39 import org.jboss.shrinkwrap.api.ShrinkWrap;
40 import org.jboss.shrinkwrap.api.spec.JavaArchive;
41 import org.jboss.shrinkwrap.api.spec.WebArchive;
42 import org.jboss.shrinkwrap.resolver.api.maven.Maven;
43 import org.junit.After;
44 import org.junit.AfterClass;
45 import org.junit.BeforeClass;
46 import org.junit.Test;
47 import org.junit.runner.RunWith;
48
49 import org.openecomp.mso.global_tests.ArquillianPackagerForITCases;
50
51 @RunWith(Arquillian.class)
52 public class JMeterITCase {
53
54     @Deployment(name = "mso-api-handler-infra", testable = false)
55     public static Archive<?> createMsoApiHandlerInfraWarDeployment() {
56         System.out.println("Deploying ApiHandler Infra WAR on default server");
57         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../mso-api-handlers/mso-api-handler-infra/target/", "mso-api-handler-infra*.war", "mso-api-handler-infra.war");
58     }
59
60     @Deployment(name = "mso-vnf-adapter", testable = false)
61     public static Archive<?> createMsoVnfAdapterWarDeployment() {
62         System.out.println("Deploying VNF Adapter WAR on default server");
63         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../adapters/mso-vnf-adapter/target/", "mso-vnf-adapter*.war", "mso-vnf-adapter.war");
64     }
65
66     @Deployment(name = "mso-tenant-adapter", testable = false)
67     public static Archive<?> createMsoTenantAdapterWarDeployment() {
68         System.out.println("Deploying Tenant Adapter WAR on default server");
69         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../adapters/mso-tenant-adapter/target/", "mso-tenant-adapter*.war", "mso-tenant-adapter.war");
70     }
71
72     @Deployment(name = "mso-sdnc-adapter", testable = false)
73     public static Archive<?> createMsoSdncAdapterWarDeployment() {
74         System.out.println("Deploying SDNC Adapter WAR on default server");
75         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../adapters/mso-sdnc-adapter/target/", "mso-sdnc-adapter*.war", "mso-sdnc-adapter.war");
76     }
77
78     @Deployment(name = "mso-network-adapter", testable = false)
79     public static Archive<?> createMsoNetworkAdapterWarDeployment() {
80         System.out.println("Deploying Network Adapter WAR on default server");
81         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../adapters/mso-network-adapter/target/", "mso-network-adapter*.war", "mso-network-adapter.war");
82     }
83
84     @Deployment(name = "mso-requests-db-adapter", testable = false)
85     public static Archive<?> createMsoRequestsDbAdapterWarDeployment() {
86         System.out.println("Deploying Requests DB Adapter WAR on default server");
87         return ArquillianPackagerForITCases.createPackageFromExistingOne("../../adapters/mso-requests-db-adapter/target/", "mso-requests-db-adapter*.war", "mso-requests-db-adapter.war");
88     }
89
90     @Deployment(name = "asdc-controller", testable = true)
91     public static Archive<?> createAsdcControllerWarDeployment() {
92         System.out.println("Deploying ASDC Controller WAR with additional resources on default server");
93
94         WebArchive warArchive = (WebArchive) ArquillianPackagerForITCases.createPackageFromExistingOne("../../asdc-controller/target/", "asdc-controller*.war", "asdc-controller.war");
95
96         // Add the current test class
97         JavaArchive testclasses = ShrinkWrap.create(JavaArchive.class, "testClasses.jar");
98         testclasses.addClasses(JMeterITCase.class);
99
100         warArchive.addAsLibraries(testclasses);
101
102         // BE CAREFUL a settings.xml file must be located in ${home.user}/.m2/settings.xml
103         warArchive.addAsLibraries(Maven.resolver()
104                 .resolve("org.mockito:mockito-all:1.10.19")
105                 .withoutTransitivity()
106                 .asFile());
107
108         // Take one war randomly to make arquilian happy
109
110         Testable.archiveToTest(warArchive);
111
112
113         return warArchive;
114     }
115
116
117     @BeforeClass
118     public static void waitBeforeStart() throws InterruptedException {
119         System.out.println("Executing " + JMeterITCase.class.getName());
120
121     }
122
123     @Test
124     @RunAsClient()
125     public void testJMeter() throws IOException {
126         // JMeter Engine
127         StandardJMeterEngine jmeter = new StandardJMeterEngine();
128
129
130         // Initialize Properties, logging, locale, etc.
131         JMeterUtils.loadJMeterProperties("/tmp/apache-jmeter-2.13/bin/jmeter.properties");
132         JMeterUtils.setJMeterHome("/tmp/apache-jmeter-2.13");
133         JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
134         JMeterUtils.initLocale();
135
136         // Initialize JMeter SaveService
137         SaveService.loadProperties();
138
139         // Load existing .jmx Test Plan
140
141         FileInputStream in = new FileInputStream("./src/test/resources/JMeter/MSO-Perf.jmx");
142         HashTree testPlanTree = SaveService.loadTree(in);
143         testPlanTree.getTree("test variables");
144         in.close();
145
146         // Run JMeter Test
147         jmeter.configure(testPlanTree);
148         jmeter.run();
149     }
150
151     @AfterClass
152     public static void afterArquillianTest() {
153         try {
154             Files.move(Paths.get("./jmeter.log"),
155                     Paths.get("./target/surefire-reports/jmeter.log"),
156                     StandardCopyOption.REPLACE_EXISTING);
157
158                 /*      Files.move (Paths.get ("./mso-perf.jtl"),
159                                         Paths.get ("./target/surefire-reports/mso-perf.log"),
160                                         StandardCopyOption.REPLACE_EXISTING);*/
161
162         } catch (IOException e) {
163             e.printStackTrace();
164         }
165     }
166 }