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