示例#1
0
  /** Creates a unique context setup to run tasks */
  public static DummyAbstractKernelAppContext createContext() {
    DummyComponentRegistry systemRegistry = new DummyComponentRegistry();
    DummyComponentRegistry serviceRegistry = new DummyComponentRegistry();
    DummyAbstractKernelAppContext context = new DummyAbstractKernelAppContext(serviceRegistry);

    serviceRegistry.registerAppContext();

    TaskScheduler scheduler = null;
    if (masterSchedulerProperties == null) {
      scheduler = new DummyTaskScheduler(context, false);
    } else {
      TestResourceCoordinator rc = new TestResourceCoordinator();
      systemRegistry.setComponent(TestResourceCoordinator.class, rc);
      try {
        scheduler =
            new MasterTaskScheduler(masterSchedulerProperties, rc, taskHandler, null, context);
      } catch (Exception e) {
        throw new IllegalArgumentException("Failed to create " + "master scheduler", e);
      }
    }
    systemRegistry.setComponent(TaskScheduler.class, scheduler);

    contextMap.put(context, new ContextState(systemRegistry, serviceRegistry));

    proxy.setContext(context);
    return context;
  }
 public void testConcurrency() throws Throwable {
   DummyComponentRegistry componentRegistry = new DummyComponentRegistry();
   service = getDataService(props, componentRegistry);
   if (service instanceof ProfileProducer) {
     DummyProfileCoordinator.startProfiling(((ProfileProducer) service));
   }
   DummyTransaction txn = new DummyTransaction();
   txnProxy.setCurrentTransaction(txn);
   service.configure(componentRegistry, txnProxy);
   componentRegistry.setComponent(DataManager.class, service);
   componentRegistry.registerAppContext();
   txn.commit();
   int perThread = objects + objectsBuffer;
   /* Create objects */
   for (int t = 0; t < maxThreads; t++) {
     long startTime = System.currentTimeMillis();
     txn = new DummyTransaction();
     txnProxy.setCurrentTransaction(txn);
     int start = t * perThread;
     BigInteger block = null;
     for (int i = 0; i < perThread; i++) {
       if (startTime + 100 < System.currentTimeMillis()) {
         txn.commit();
         txn = new DummyTransaction();
         txnProxy.setCurrentTransaction(txn);
         if (i > 0) {
           service.getBinding(getObjectName(start), ModifiableObject.class);
         }
       }
       ModifiableObject object = new ModifiableObject();
       if (i == 0) {
         service.manageInNewArea(object);
       }
       service.setBinding(getObjectName(start + i), object);
       BigInteger oidBlock = service.createReference(object).getId().shiftRight(32);
       if (block == null || !block.equals(oidBlock)) {
         block = oidBlock;
         System.err.println("Thread " + t + ": init block " + block);
       }
     }
     txn.commit();
   }
   /* Warm up */
   if (repeat != 1) {
     System.err.println("Warmup:");
     runOperations(1);
   }
   /* Test */
   for (int t = threads; t <= maxThreads; t++) {
     System.err.println("Threads: " + t);
     for (int r = 0; r < repeat; r++) {
       runOperations(t);
     }
   }
 }
 /** Initial setup */
 @BeforeClass
 public static void setUpClass() throws Exception {
   DummyAbstractKernelAppContext appContext = MinimalTestKernel.createContext();
   DummyComponentRegistry systemRegistry = MinimalTestKernel.getSystemRegistry(appContext);
   DummyComponentRegistry serviceRegistry = MinimalTestKernel.getServiceRegistry(appContext);
   dataService =
       new DataServiceImpl(
           createProperties(
               DataStoreImpl.class.getName() + ".directory",
               dbDirectory,
               StandardProperties.APP_NAME,
               "TestScalableHashMapStress"),
           systemRegistry,
           txnProxy);
   txnProxy.setComponent(DataService.class, dataService);
   serviceRegistry.setComponent(DataManager.class, dataService);
   serviceRegistry.setComponent(DataService.class, dataService);
   taskService = new TaskServiceImpl(new Properties(), systemRegistry, txnProxy);
   serviceRegistry.setComponent(TaskManager.class, taskService);
 }