This project has retired. For details please refer to its Attic page.
UDDI_040_PerformanceIntegrationTest xref
View Javadoc
1   /*
2    * Copyright 2015 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.juddi.v3.tck;
17  
18  import java.io.BufferedOutputStream;
19  import java.io.File;
20  import java.io.FileOutputStream;
21  import java.io.PrintWriter;
22  import java.util.ArrayList;
23  import java.util.HashMap;
24  import java.util.Iterator;
25  import java.util.List;
26  import java.util.Map;
27  import javax.xml.ws.BindingProvider;
28  import org.apache.commons.configuration.ConfigurationException;
29  import org.apache.commons.logging.Log;
30  import org.apache.commons.logging.LogFactory;
31  import org.apache.juddi.v3.client.UDDIConstants;
32  import org.apache.juddi.v3.client.config.UDDIClient;
33  import org.apache.juddi.v3.client.transport.Transport;
34  import org.junit.AfterClass;
35  import org.junit.Assert;
36  import org.junit.BeforeClass;
37  import org.junit.Test;
38  import org.uddi.api_v3.BusinessDetail;
39  import org.uddi.api_v3.BusinessEntity;
40  import org.uddi.api_v3.CategoryBag;
41  import org.uddi.api_v3.DeleteBusiness;
42  import org.uddi.api_v3.KeyedReference;
43  import org.uddi.api_v3.Name;
44  import org.uddi.api_v3.SaveBusiness;
45  import org.uddi.v3_service.UDDIInquiryPortType;
46  import org.uddi.v3_service.UDDIPublicationPortType;
47  import org.uddi.v3_service.UDDISecurityPortType;
48  
49  /**
50   * Runs a number of tests and calculates operations/second as part of a unit
51   * test
52   *
53   * @author alex o'ree
54   */
55  public class UDDI_040_PerformanceIntegrationTest {
56  
57          static Map<String, Double> data = new HashMap<String, Double>();
58          protected static Log logger = LogFactory.getLog(UDDI_040_BusinessServiceIntegrationTest.class);
59          protected static TckTModel tckTModelSam = null;
60          protected static TckBusiness tckBusinessSam = null;
61          protected static TckBusinessService tckBusinessServiceSam = null;
62          protected static UDDIInquiryPortType inquirySam = null;
63          protected static UDDIPublicationPortType publishSam = null;
64  
65          protected static String authInfoSam = null;
66          private static UDDIClient manager;
67  
68          @AfterClass
69          public static void stopManager() throws Exception {
70                  if (!TckPublisher.isEnabled()) {
71                          return;
72                  }
73  
74                  tckTModelSam.deleteCreatedTModels(authInfoSam);
75                  manager.stop();
76                  Iterator<Map.Entry<String, Double>> iterator = data.entrySet().iterator();
77                  File f = new File("pref-rpt-" + System.currentTimeMillis() + ".txt");
78                  PrintWriter writer = new PrintWriter(f, "UTF-8");
79  
80                  while (iterator.hasNext()) {
81                          Map.Entry<String, Double> next = iterator.next();
82                          logger.info(next.getKey() + " = " + next.getValue() + " tx/ms");
83                          writer.write(next.getKey() + " = " + next.getValue() + " tx/ms" + System.getProperty("line.separator"));
84  
85                  }
86                  writer.close();
87                  f = null;
88                  TckCommon.PrintMarker();
89  
90          }
91  
92          @BeforeClass
93          public static void startManager() throws ConfigurationException {
94                  if (!TckPublisher.isEnabled()) {
95                          return;
96                  }
97                  manager = new UDDIClient();
98                  manager.start();
99  
100                 logger.debug("Getting auth tokens..");
101                 try {
102                         Transport transport = manager.getTransport("uddiv3");
103                         UDDISecurityPortType security = transport.getUDDISecurityService();
104                         authInfoSam = TckSecurity.getAuthToken(security, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
105 
106                         UDDIPublicationPortType publication = null;
107                         UDDIInquiryPortType inquiry = null;
108 
109                         transport = manager.getTransport("uddiv3");
110                         publication = transport.getUDDIPublishService();
111                         inquiry = transport.getUDDIInquiryService();
112                         if (!TckPublisher.isUDDIAuthMode()) {
113                                 TckSecurity.setCredentials((BindingProvider) publication, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
114                                 TckSecurity.setCredentials((BindingProvider) inquiry, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
115                         }
116                         tckTModelSam = new TckTModel(publication, inquiry);
117                         tckBusinessSam = new TckBusiness(publication, inquiry);
118                         tckBusinessServiceSam = new TckBusinessService(publication, inquiry);
119                         inquirySam = inquiry;
120                         publishSam = publication;
121 
122                 } catch (Exception e) {
123                         logger.error(e.getMessage(), e);
124                         Assert.fail("Could not obtain authInfo token.");
125                 }
126                 JUDDI_300_MultiNodeIntegrationTest.testSetupReplicationConfig();
127         }
128         long counter = 30;
129 
130         @Test
131         public void testInsertFlatBusiness() throws Exception {
132                 logger.info("Performace test, inserting " + counter + " flat businesses");
133                 BusinessEntity be = new BusinessEntity();
134                 SaveBusiness sb = new SaveBusiness();
135                 sb.setAuthInfo(authInfoSam);
136                 List<String> biz = new ArrayList<String>();
137                 long start = System.currentTimeMillis();
138                 for (int i = 0; i < counter; i++) {
139                         System.out.print(".");
140                         be.getName().clear();
141                         be.getName().add(new Name("Name " + i, null));
142                         sb.getBusinessEntity().clear();
143                         sb.getBusinessEntity().add(be);
144                         BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
145                         biz.add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
146                 }
147                 start = System.currentTimeMillis() - start;
148                 data.put("Insert Flat Businesses 1x", (double)counter/(double)start );
149                 logger.info("Insert flat businesses took 1x" + start);
150 
151                 start = System.currentTimeMillis();
152                 for (int i = 0; i < counter; i++) {
153                         System.out.print(".");
154                         DeleteBusiness deleteBusiness = new DeleteBusiness();
155                         deleteBusiness.setAuthInfo(authInfoSam);
156                         deleteBusiness.getBusinessKey().add(biz.get(i));
157                         publishSam.deleteBusiness(deleteBusiness);
158 
159                 }
160                 start = System.currentTimeMillis() - start;
161                 data.put("Delete Flat Businesses 1x", (double)counter/(double)start );
162                 logger.info("Insert flat businesses took 1x" + start);
163 
164         }
165 
166         @Test
167         public void testInsertFlatBusinessBulk() throws Exception {
168                 logger.info("Performace test, inserting " + counter + " flat businesses bulk");
169                 BusinessEntity be = new BusinessEntity();
170                 SaveBusiness sb = new SaveBusiness();
171                 sb.setAuthInfo(authInfoSam);
172                 List<String> biz = new ArrayList<String>();
173 
174                 for (int i = 0; i < counter; i++) {
175                         System.out.print(".");
176                         be.getName().clear();
177                         be.getName().add(new Name("Name " + i, null));
178                         sb.getBusinessEntity().clear();
179                         sb.getBusinessEntity().add(be);
180 
181                 }
182 
183                 long start = System.currentTimeMillis();
184                 BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
185 
186                 start = System.currentTimeMillis() - start;
187                 data.put("Insert Flat Businesses Bulk", (double)counter/(double)start );
188                 logger.info("Insert flat businesses took Bulk" + start);
189 
190                 DeleteBusiness deleteBusiness = new DeleteBusiness();
191                 deleteBusiness.setAuthInfo(authInfoSam);
192 
193                 for (int i = 0; i < saveBusiness.getBusinessEntity().size(); i++) {
194                         deleteBusiness.getBusinessKey().add(saveBusiness.getBusinessEntity().get(i).getBusinessKey());
195                 }
196                 start = System.currentTimeMillis();
197                 publishSam.deleteBusiness(deleteBusiness);
198                 start = System.currentTimeMillis() - start;
199                 data.put("Delete Flat Businesses Bulk", (double)counter/(double)start );
200                 logger.info("Insert flat businesses took Bulk" + start);
201 
202         }
203 
204         @Test
205         public void testInsertFlatBusinessManyNames() throws Exception {
206                 logger.info("Performace test, inserting " + counter + " flat businesses ManyNames");
207                 BusinessEntity be = new BusinessEntity();
208                 SaveBusiness sb = new SaveBusiness();
209                 sb.setAuthInfo(authInfoSam);
210                 List<String> biz = new ArrayList<String>();
211                 long start = System.currentTimeMillis();
212                 for (int i = 0; i < counter; i++) {
213                         System.out.print(".");
214                         be.getName().clear();
215                         for (int k = 0; k < counter; k++) {
216                                 be.getName().add(new Name("Name " + i + "-" + k, null));
217                         }
218                         sb.getBusinessEntity().clear();
219                         sb.getBusinessEntity().add(be);
220                         BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
221                         biz.add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
222                 }
223                 start = System.currentTimeMillis() - start;
224                 data.put("Insert Flat Businesses 1x ManyNames", (double)counter/(double)start );
225                 logger.info("Insert flat businesses took 1x ManyNames" + start);
226 
227                 start = System.currentTimeMillis();
228                 for (int i = 0; i < biz.size(); i++) {
229                         System.out.print(".");
230                         DeleteBusiness deleteBusiness = new DeleteBusiness();
231                         deleteBusiness.setAuthInfo(authInfoSam);
232                         deleteBusiness.getBusinessKey().add(biz.get(i));
233                         publishSam.deleteBusiness(deleteBusiness);
234 
235                 }
236                 start = System.currentTimeMillis() - start;
237                 data.put("Delete Flat Businesses 1x ManyNames", (double)counter/(double)start );
238                 logger.info("Insert flat businesses took 1x ManyNames" + start);
239 
240         }
241 
242         @Test
243         public void testInsertFlatBusinessBulkManyNames() throws Exception {
244                 logger.info("Performace test, inserting " + counter + " flat businesses bulk ManyNames");
245                 BusinessEntity be = new BusinessEntity();
246                 SaveBusiness sb = new SaveBusiness();
247                 sb.setAuthInfo(authInfoSam);
248                 List<String> biz = new ArrayList<String>();
249 
250                 for (int i = 0; i < counter; i++) {
251                         System.out.print(".");
252                         be.getName().clear();
253                         for (int k = 0; k < counter; k++) {
254                                 be.getName().add(new Name("Name " + i + "-" + k, null));
255                         }
256                         sb.getBusinessEntity().clear();
257                         sb.getBusinessEntity().add(be);
258 
259                 }
260 
261                 long start = System.currentTimeMillis();
262                 BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
263 
264                 start = System.currentTimeMillis() - start;
265                 data.put("Insert Flat Businesses Bulk ManyNames", (double)counter/(double)start );
266                 logger.info("Insert flat businesses took Bulk ManyNames" + start);
267 
268                 DeleteBusiness deleteBusiness = new DeleteBusiness();
269                 deleteBusiness.setAuthInfo(authInfoSam);
270 
271                 for (int i = 0; i < saveBusiness.getBusinessEntity().size(); i++) {
272                         deleteBusiness.getBusinessKey().add(saveBusiness.getBusinessEntity().get(i).getBusinessKey());
273                 }
274                 start = System.currentTimeMillis();
275                 publishSam.deleteBusiness(deleteBusiness);
276                 start = System.currentTimeMillis() - start;
277                 data.put("Delete Flat Businesses Bulk ManyNames", (double)counter/(double)start );
278                 logger.info("Insert flat businesses took Bulk ManyNames" + start);
279 
280         }
281         
282         
283         
284         @Test
285         public void testInsertFlatBusinessManyCategories() throws Exception {
286                 logger.info("Performace test, inserting " + counter + " flat businesses ManyCategories");
287                 BusinessEntity be = new BusinessEntity();
288                 SaveBusiness sb = new SaveBusiness();
289                 sb.setAuthInfo(authInfoSam);
290                 List<String> biz = new ArrayList<String>();
291                 long start = System.currentTimeMillis();
292                 for (int i = 0; i < counter; i++) {
293                         System.out.print(".");
294                         be.getName().clear();
295                          be.getName().add(new Name("Name " + i, null));
296                          be.setCategoryBag(new CategoryBag());
297                         for (int k = 0; k < counter; k++) {
298                                be.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.General_Keywords, "somename", "somevalue"+k));
299                         }
300                         sb.getBusinessEntity().clear();
301                         sb.getBusinessEntity().add(be);
302                         BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
303                         biz.add(saveBusiness.getBusinessEntity().get(0).getBusinessKey());
304                 }
305                 start = System.currentTimeMillis() - start;
306                 data.put("Insert Flat Businesses 1x ManyCategories", (double)counter/(double)start );
307                 logger.info("Insert flat businesses took 1x ManyCategories" + start);
308 
309                 start = System.currentTimeMillis();
310                 for (int i = 0; i < biz.size(); i++) {
311                         System.out.print(".");
312                         DeleteBusiness deleteBusiness = new DeleteBusiness();
313                         deleteBusiness.setAuthInfo(authInfoSam);
314                         deleteBusiness.getBusinessKey().add(biz.get(i));
315                         publishSam.deleteBusiness(deleteBusiness);
316 
317                 }
318                 start = System.currentTimeMillis() - start;
319                 data.put("Delete Flat Businesses 1x ManyCategories", (double)counter/(double)start );
320                 logger.info("Insert flat businesses took 1x ManyCategories" + start);
321 
322         }
323 
324         @Test
325         public void testInsertFlatBusinessBulkManyCategories() throws Exception {
326                 logger.info("Performace test, inserting " + counter + " flat businesses bulk ManyCategories");
327                 BusinessEntity be = new BusinessEntity();
328                 SaveBusiness sb = new SaveBusiness();
329                 sb.setAuthInfo(authInfoSam);
330                 List<String> biz = new ArrayList<String>();
331 
332                 for (int i = 0; i < counter; i++) {
333                         System.out.print(".");
334                         be.getName().clear();
335                          be.getName().add(new Name("Name " + i, null));
336                          be.setCategoryBag(new CategoryBag());
337                         for (int k = 0; k < counter; k++) {
338                                be.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.General_Keywords, "somename", "somevalue"+k));
339                         }
340                         sb.getBusinessEntity().clear();
341                         sb.getBusinessEntity().add(be);
342 
343                 }
344 
345                 long start = System.currentTimeMillis();
346                 BusinessDetail saveBusiness = publishSam.saveBusiness(sb);
347 
348                 start = System.currentTimeMillis() - start;
349                 data.put("Insert Flat Businesses Bulk ManyCategories", (double)counter/(double)start );
350                 logger.info("Insert flat businesses took Bulk ManyCategories" + start);
351 
352                 DeleteBusiness deleteBusiness = new DeleteBusiness();
353                 deleteBusiness.setAuthInfo(authInfoSam);
354 
355                 for (int i = 0; i < saveBusiness.getBusinessEntity().size(); i++) {
356                         deleteBusiness.getBusinessKey().add(saveBusiness.getBusinessEntity().get(i).getBusinessKey());
357                 }
358                 start = System.currentTimeMillis();
359                 publishSam.deleteBusiness(deleteBusiness);
360                 start = System.currentTimeMillis() - start;
361                 data.put("Delete Flat Businesses Bulk ManyCategories", (double)counter/(double)start );
362                 logger.info("Insert flat businesses took Bulk ManyCategories" + start);
363 
364         }
365 }