@BeforeMethod(alwaysRun = true)
  public void setUp() throws Exception {
    events = new CopyOnWriteArrayList<SensorEvent<FailureDescriptor>>();

    managementContext = Entities.newManagementContext();
    app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);

    app.getManagementContext()
        .getSubscriptionManager()
        .subscribe(
            app,
            HASensors.CONNECTION_FAILED,
            new SensorEventListener<FailureDescriptor>() {
              @Override
              public void onEvent(SensorEvent<FailureDescriptor> event) {
                events.add(event);
              }
            });
    app.getManagementContext()
        .getSubscriptionManager()
        .subscribe(
            app,
            HASensors.CONNECTION_RECOVERED,
            new SensorEventListener<FailureDescriptor>() {
              @Override
              public void onEvent(SensorEvent<FailureDescriptor> event) {
                events.add(event);
              }
            });

    serverSocketAddress = startServerSocket();
  }
 @BeforeMethod(alwaysRun = true)
 public void setUp() throws Exception {
   for (int i = 0; i < 5; i++) System.gc();
   loc = new SimulatedLocation();
   app = ApplicationBuilder.newManagedApp(TestApplication.class);
   mgmt = app.getManagementContext();
 }
예제 #3
0
 @Test
 public void testCreateInAppWithClassAndMap() {
   StartableApplication app2 = null;
   try {
     ApplicationBuilder appB =
         new ApplicationBuilder() {
           @Override
           protected void doBuild() {
             addChild(MutableMap.of("confName", "faz"), TestEntity.class);
           }
         };
     app2 = appB.manage();
     assertEquals(
         Iterables.getOnlyElement(app2.getChildren()).getConfig(TestEntity.CONF_NAME), "faz");
   } finally {
     if (app2 != null) Entities.destroyAll(app2);
   }
 }
  @BeforeMethod(alwaysRun = true)
  public void setUp() throws Exception {
    loc = new LocalhostMachineProvisioningLocation();
    app = ApplicationBuilder.newManagedApp(TestApplication.class);
    entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
    app.start(ImmutableList.of(loc));

    server = BetterMockWebServer.newInstanceLocalhost();
    for (int i = 0; i < 100; i++) {
      server.enqueue(
          new MockResponse()
              .setResponseCode(200)
              .addHeader("content-type: application/json")
              .setBody("{\"foo\":\"myfoo\"}"));
    }
    server.play();
    baseUrl = server.getUrl("/");
  }
 @BeforeMethod(alwaysRun = true)
 public void setUp() throws Exception {
   localManagementContext = newPersistingManagementContext();
   if (persister == null) {
     persister = localManagementContext.getRebindManager().getPersister();
   }
   if (objectStore == null && persister instanceof BrooklynMementoPersisterToObjectStore) {
     objectStore = ((BrooklynMementoPersisterToObjectStore) persister).getObjectStore();
   }
   app =
       ApplicationBuilder.newManagedApp(
           EntitySpec.create(TestApplication.class), localManagementContext);
   location =
       localManagementContext
           .getLocationManager()
           .createLocation(
               LocationSpec.create(SshMachineLocation.class).configure("address", "localhost"));
   entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).location(location));
   enricher = app.addEnricher(Enrichers.builder().propagatingAll().from(entity).build());
   app.addPolicy(policy = new TestPolicy());
 }
 protected void configureRenderingMetadata(ApplicationSpec spec, ApplicationBuilder appBuilder) {
   appBuilder.configure(getRenderingConfigurationFor(spec.getType()));
 }
  @SuppressWarnings("unchecked")
  public Application create(ApplicationSpec spec) {
    log.debug("REST creating application instance for {}", spec);

    if (!Entitlements.isEntitled(
        mgmt.getEntitlementManager(), Entitlements.DEPLOY_APPLICATION, spec)) {
      throw WebResourceUtils.unauthorized(
          "User '%s' is not authorized to deploy application %s",
          Entitlements.getEntitlementContext().user(), spec);
    }

    final String type = spec.getType();
    final String name = spec.getName();
    final Map<String, String> configO = spec.getConfig();
    final Set<EntitySpec> entities =
        (spec.getEntities() == null) ? ImmutableSet.<EntitySpec>of() : spec.getEntities();

    final Application instance;

    // Load the class; first try to use the appropriate catalog item; but then allow anything that
    // is on the classpath
    final Class<? extends Entity> clazz;
    if (Strings.isEmpty(type)) {
      clazz = BasicApplication.class;
    } else {
      Class<? extends Entity> tempclazz;
      try {
        tempclazz = getCatalog().loadClassByType(type, Entity.class);
      } catch (NoSuchElementException e) {
        try {
          tempclazz = (Class<? extends Entity>) getCatalog().getRootClassLoader().loadClass(type);
          log.info(
              "Catalog does not contain item for type {}; loaded class directly instead", type);
        } catch (ClassNotFoundException e2) {
          log.warn(
              "No catalog item for type {}, and could not load class directly; rethrowing", type);
          throw e;
        }
      }
      clazz = tempclazz;
    }
    if (Entitlements.isEntitled(mgmt.getEntitlementManager(), Entitlements.INVOKE_EFFECTOR, null)) {

      try {
        if (ApplicationBuilder.class.isAssignableFrom(clazz)) {
          Constructor<?> constructor = clazz.getConstructor();
          ApplicationBuilder appBuilder = (ApplicationBuilder) constructor.newInstance();
          if (!Strings.isEmpty(name)) appBuilder.appDisplayName(name);
          if (entities.size() > 0)
            log.warn(
                "Cannot supply additional entities when using an ApplicationBuilder; ignoring in spec {}",
                spec);

          log.info("REST placing '{}' under management", spec.getName());
          appBuilder.configure(convertFlagsToKeys(appBuilder.getType(), configO));
          configureRenderingMetadata(spec, appBuilder);
          instance = appBuilder.manage(mgmt);

        } else if (Application.class.isAssignableFrom(clazz)) {
          brooklyn.entity.proxying.EntitySpec<?> coreSpec = toCoreEntitySpec(clazz, name, configO);
          configureRenderingMetadata(spec, coreSpec);
          instance = (Application) mgmt.getEntityManager().createEntity(coreSpec);
          for (EntitySpec entitySpec : entities) {
            log.info("REST creating instance for entity {}", entitySpec.getType());
            instance.addChild(mgmt.getEntityManager().createEntity(toCoreEntitySpec(entitySpec)));
          }

          log.info(
              "REST placing '{}' under management", spec.getName() != null ? spec.getName() : spec);
          Entities.startManagement(instance, mgmt);

        } else if (Entity.class.isAssignableFrom(clazz)) {
          if (entities.size() > 0)
            log.warn(
                "Cannot supply additional entities when using a non-application entity; ignoring in spec {}",
                spec);

          brooklyn.entity.proxying.EntitySpec<?> coreSpec =
              toCoreEntitySpec(BasicApplication.class, name, configO);
          configureRenderingMetadata(spec, coreSpec);

          instance = (Application) mgmt.getEntityManager().createEntity(coreSpec);

          final Class<? extends Entity> eclazz =
              getCatalog().loadClassByType(spec.getType(), Entity.class);
          Entity soleChild =
              mgmt.getEntityManager().createEntity(toCoreEntitySpec(eclazz, name, configO));
          instance.addChild(soleChild);
          instance.addEnricher(Enrichers.builder().propagatingAll().from(soleChild).build());

          log.info("REST placing '{}' under management", spec.getName());
          Entities.startManagement(instance, mgmt);

        } else {
          throw new IllegalArgumentException(
              "Class " + clazz + " must extend one of ApplicationBuilder, Application or Entity");
        }

        return instance;

      } catch (Exception e) {
        log.error("REST failed to create application: " + e, e);
        throw Exceptions.propagate(e);
      }
    }
    throw WebResourceUtils.unauthorized(
        "User '%s' is not authorized to create application from applicationSpec %s",
        Entitlements.getEntitlementContext().user(), spec);
  }
 @BeforeMethod(alwaysRun = true)
 public void setup() {
   app = ApplicationBuilder.newManagedApp(TestApplication.class);
   loc = new LocalhostMachineProvisioningLocation();
 }
예제 #9
0
 @BeforeMethod(alwaysRun = true)
 public void setUp() throws Exception {
   app = ApplicationBuilder.newManagedApp(TestApplication.class);
   entity = app.createAndManageChild(TestEntity.Spec.newInstance());
   managementContext = app.getManagementContext();
 }
 @BeforeMethod(groups = "Integration")
 public void setup() {
   app = ApplicationBuilder.newManagedApp(TestApplication.class);
   testLocation = new LocalhostMachineProvisioningLocation();
 }
 @BeforeMethod(alwaysRun = true)
 public void setup() {
   app = ApplicationBuilder.newManagedApp(TestApplication.class);
 }