This project has retired. For details please refer to its
Attic page.
API_040_BusinessServiceLoadTest xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.apache.juddi.api.impl;
16
17 import java.io.File;
18 import java.rmi.RemoteException;
19
20 import org.apache.commons.configuration.ConfigurationException;
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.juddi.Registry;
24 import org.apache.juddi.config.AppConfig;
25 import static org.apache.juddi.config.AppConfig.JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY;
26 import org.apache.juddi.config.Property;
27 import org.apache.juddi.query.util.FindQualifiers;
28 import org.apache.juddi.v3.tck.TckBusiness;
29 import org.apache.juddi.v3.tck.TckBusinessService;
30 import org.apache.juddi.v3.tck.TckPublisher;
31 import org.apache.juddi.v3.tck.TckSecurity;
32 import org.apache.juddi.v3.tck.TckTModel;
33 import org.junit.AfterClass;
34 import org.junit.Assert;
35 import org.junit.Assume;
36 import org.junit.BeforeClass;
37 import org.junit.Ignore;
38 import org.junit.Test;
39 import org.uddi.api_v3.BusinessList;
40 import org.uddi.api_v3.FindBusiness;
41 import org.uddi.api_v3.FindService;
42 import org.uddi.api_v3.Name;
43 import org.uddi.api_v3.ServiceList;
44 import org.uddi.v3_service.DispositionReportFaultMessage;
45 import org.uddi.v3_service.UDDISecurityPortType;
46
47
48
49
50
51 public class API_040_BusinessServiceLoadTest {
52
53 private static Log logger = LogFactory.getLog(API_040_BusinessServiceTest.class);
54
55 private static API_010_PublisherTest api010 = new API_010_PublisherTest();
56 protected static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
57 protected static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
58 protected static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
59 private static UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
60
61 int numberOfBusinesses = 100;
62 int numberOfServices = 100;
63
64 protected static String authInfoJoe = null;
65 protected static String authInfoSam = null;
66
67 @BeforeClass
68 public static void setup() throws ConfigurationException {
69 File f = new File(".");
70 System.out.println("Current working dir is " + f.getAbsolutePath());
71 System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, f.getAbsolutePath()+"/src/test/resources/juddiv3DisabledTModelKeybag.xml");
72 Registry.start();
73 logger.info("API_040_BusinessServiceTestPerformance");
74 logger.debug("Getting auth tokens..");
75 try {
76 api010.saveJoePublisher();
77 UDDISecurityPortType security = new UDDISecurityImpl();
78 authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
79 String authInfoUDDI = TckSecurity.getAuthToken(security, TckPublisher.getUDDIPublisherId(), TckPublisher.getUDDIPassword());
80 tckTModel.saveUDDIPublisherTmodel(authInfoUDDI);
81 tckTModel.saveTModels(authInfoUDDI, TckTModel.TMODELS_XML);
82 } catch (RemoteException e) {
83 logger.error(e.getMessage(), e);
84 Assert.fail("Could not obtain authInfo token.");
85 }
86 }
87
88 @AfterClass
89 public static void shutdown() throws ConfigurationException {
90 tckTModel.deleteCreatedTModels(authInfoJoe);
91 Registry.stop();
92 System.clearProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY);
93 }
94
95
96
97
98
99
100
101
102 @Test
103
104 public void find20Businesses() throws DispositionReportFaultMessage, ConfigurationException {
105
106 Assume.assumeTrue(TckPublisher.isLoadTest());
107 try {
108
109
110
111
112 System.setProperty(JUDDI_CONFIGURATION_FILE_SYSTEM_PROPERTY, "/src/test/resources/juddiv3DisabledTModelKeybag.xml");
113 tckTModel.saveJoePublisherTmodel(authInfoJoe);
114 long startSave = System.currentTimeMillis();
115
116 tckBusiness.saveJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
117 for (int i = 0; i < numberOfBusinesses; i++) {
118 tckBusinessService.saveJoePublisherServices(authInfoJoe, i, numberOfServices);
119 }
120 long saveDuration = System.currentTimeMillis() - startSave;
121 System.out.println("Saved " + numberOfBusinesses + " businesses with each " + numberOfServices + " services in " + saveDuration + "ms");
122 System.out.println("Tiggering findBusiness query...");
123
124 FindBusiness fb = new FindBusiness();
125 org.uddi.api_v3.FindQualifiers apiFq = new org.uddi.api_v3.FindQualifiers();
126 apiFq.getFindQualifier().add(FindQualifiers.APPROXIMATE_MATCH);
127 apiFq.getFindQualifier().add(FindQualifiers.CASE_INSENSITIVE_MATCH);
128 fb.setFindQualifiers(apiFq);
129 Name name = new Name();
130 name.setValue("John%");
131 fb.getName().add(name);
132 fb.setMaxRows(20);
133 long startFind = System.currentTimeMillis();
134 BusinessList result = inquiry.findBusiness(fb);
135 long findDuration = System.currentTimeMillis() - startFind;
136 System.out.println("Find 20 businesses took " + findDuration + "ms. Size=" + result.getBusinessInfos().getBusinessInfo().size());
137
138 if (findDuration > 20000) {
139 Assert.fail("This operation took too long to process");
140 }
141
142 System.out.println("Tiggering findService query...");
143 FindService fs = new FindService();
144 fs.setFindQualifiers(apiFq);
145 name.setValue("Service One%");
146 fs.getName().add(name);
147 startFind = System.currentTimeMillis();
148
149 int all = numberOfBusinesses * numberOfServices;
150 System.out.println("Matching " + all + " services");
151 ServiceList serviceList = inquiry.findService(fs);
152 findDuration = System.currentTimeMillis() - startFind;
153 System.out.println("Find " + all + " services took " + findDuration + "ms. Size=" + serviceList.getServiceInfos().getServiceInfo().size());
154 if (findDuration > 20000) {
155 Assert.fail("This operation took too long to process");
156 }
157
158 } finally {
159 System.out.println("Tiggering deletion...");
160 long startDelete = System.currentTimeMillis();
161 for (int i = 0; i < numberOfBusinesses; i++) {
162 tckBusinessService.deleteJoePublisherServices(authInfoJoe, i, numberOfServices);
163 }
164 long deleteDuration = System.currentTimeMillis() - startDelete;
165 System.out.println("Delete all business and services in " + deleteDuration + "ms");
166 tckBusiness.deleteJoePublisherBusinesses(authInfoJoe, numberOfBusinesses);
167 tckTModel.deleteJoePublisherTmodel(authInfoJoe);
168 }
169
170 }
171
172 }