Merge "Replace with Diamond symbol"
[so.git] / packages / arquillian-unit-tests / src / test / java / org / openecomp / mso / global_tests / jmeter / JMeterITCase.java
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 }