Search in sources :

Example 1 with DataStore

use of io.fabric8.api.DataStore in project fabric8 by jboss-fuse.

the class ProjectDeployerTest method setUp.

@Before
public void setUp() throws Exception {
    URL.setURLStreamHandlerFactory(new CustomBundleURLStreamHandlerFactory());
    basedir = System.getProperty("basedir", ".");
    String karafRoot = basedir + "/target/karaf";
    System.setProperty("karaf.root", karafRoot);
    System.setProperty("karaf.data", karafRoot + "/data");
    sfb = new ZKServerFactoryBean();
    delete(sfb.getDataDir());
    delete(sfb.getDataLogDir());
    sfb.setPort(9123);
    sfb.afterPropertiesSet();
    int zkPort = sfb.getClientPortAddress().getPort();
    LOG.info("Connecting to ZK on port: " + zkPort);
    CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder().connectString("localhost:" + zkPort).retryPolicy(new RetryOneTime(1000)).connectionTimeoutMs(360000);
    curator = builder.build();
    curator.start();
    curator.getZookeeperClient().blockUntilConnectedOrTimedOut();
    // setup a local and remote git repo
    File root = new File(basedir + "/target/git").getCanonicalFile();
    delete(root);
    new File(root, "remote").mkdirs();
    remote = Git.init().setDirectory(new File(root, "remote")).setGitDir(new File(root, "remote/.git")).call();
    remote.commit().setMessage("First Commit").setCommitter("fabric", "user@fabric").call();
    String remoteUrl = "file://" + new File(root, "remote").getCanonicalPath();
    new File(root, "local").mkdirs();
    git = Git.init().setDirectory(new File(root, "local")).setGitDir(new File(root, "local/.git")).call();
    git.commit().setMessage("First Commit").setCommitter("fabric", "user@fabric").call();
    StoredConfig config = git.getRepository().getConfig();
    config.setString("remote", "origin", "url", remoteUrl);
    config.setString("remote", "origin", "fetch", "+refs/heads/*:refs/remotes/origin/*");
    config.save();
    runtimeProperties = EasyMock.createMock(RuntimeProperties.class);
    EasyMock.expect(runtimeProperties.getRuntimeIdentity()).andReturn("root").anyTimes();
    EasyMock.expect(runtimeProperties.getHomePath()).andReturn(Paths.get("target")).anyTimes();
    EasyMock.expect(runtimeProperties.getDataPath()).andReturn(Paths.get("target/data")).anyTimes();
    EasyMock.expect(runtimeProperties.getProperty(EasyMock.eq(SystemProperties.FABRIC_ENVIRONMENT))).andReturn("").anyTimes();
    EasyMock.expect(runtimeProperties.removeRuntimeAttribute(DataStoreTemplate.class)).andReturn(null).anyTimes();
    EasyMock.replay(runtimeProperties);
    FabricGitServiceImpl gitService = new FabricGitServiceImpl();
    gitService.bindRuntimeProperties(runtimeProperties);
    gitService.activate();
    gitService.setGitForTesting(git);
    /*
        dataStore = new GitDataStoreImpl();
        dataStore.bindCurator(curator);
        dataStore.bindGitService(gitService);
        dataStore.bindRuntimeProperties(runtimeProperties);
        dataStore.bindConfigurer(new Configurer() {
        

            @Override
            public <T> Map<String, ?> configure(Map<String, ?> configuration, T target, String... ignorePrefix) throws Exception {
                return null;
            }

            @Override
            public <T> Map<String, ?> configure(Dictionary<String, ?> configuration, T target, String... ignorePrefix) throws Exception {
                return null;
            }
        });
        Map<String, Object> datastoreProperties = new HashMap<String, Object>();
        datastoreProperties.put(GitDataStore.GIT_REMOTE_URL, remoteUrl);
        dataStore.activate(datastoreProperties);
        */
    fabricService = new FabricServiceImpl();
    // fabricService.bindDataStore(dataStore);
    fabricService.bindRuntimeProperties(runtimeProperties);
    fabricService.bindPlaceholderResolver(new DummyPlaceholerResolver("port"));
    fabricService.bindPlaceholderResolver(new DummyPlaceholerResolver("zk"));
    fabricService.bindPlaceholderResolver(new ProfilePropertyPointerResolver());
    fabricService.bindPlaceholderResolver(new ChecksumPlaceholderResolver());
    fabricService.bindPlaceholderResolver(new VersionPropertyPointerResolver());
    fabricService.bindPlaceholderResolver(new EnvPlaceholderResolver());
    fabricService.activateComponent();
    projectDeployer = new ProjectDeployerImpl();
    projectDeployer.bindFabricService(fabricService);
    projectDeployer.bindMBeanServer(ManagementFactory.getPlatformMBeanServer());
    // dataStore.getDefaultVersion();
    String defaultVersion = null;
    assertEquals("defaultVersion", "1.0", defaultVersion);
    // now lets import some data - using the old non-git file layout...
    String importPath = basedir + "/../fabric8-karaf/src/main/resources/distro/fabric/import";
    assertFolderExists(importPath);
    dataStore.importFromFileSystem(importPath);
    assertHasVersion(defaultVersion);
}
Also used : ProfilePropertyPointerResolver(io.fabric8.service.ProfilePropertyPointerResolver) RetryOneTime(org.apache.curator.retry.RetryOneTime) CuratorFrameworkFactory(org.apache.curator.framework.CuratorFrameworkFactory) FabricGitServiceImpl(io.fabric8.git.internal.FabricGitServiceImpl) ZKServerFactoryBean(io.fabric8.zookeeper.spring.ZKServerFactoryBean) VersionPropertyPointerResolver(io.fabric8.service.VersionPropertyPointerResolver) EnvPlaceholderResolver(io.fabric8.service.EnvPlaceholderResolver) FabricServiceImpl(io.fabric8.service.FabricServiceImpl) StoredConfig(org.eclipse.jgit.lib.StoredConfig) DataStoreTemplate(io.fabric8.api.DataStoreTemplate) ChecksumPlaceholderResolver(io.fabric8.service.ChecksumPlaceholderResolver) File(java.io.File) RuntimeProperties(io.fabric8.api.RuntimeProperties) Before(org.junit.Before)

Example 2 with DataStore

use of io.fabric8.api.DataStore in project fabric8 by jboss-fuse.

the class AutoScaleController method groupEvent.

@Override
public void groupEvent(Group<AutoScalerNode> group, GroupEvent event) {
    DataStore dataStore = fabricService.get().adapt(DataStore.class);
    switch(event) {
        case CONNECTED:
        case CHANGED:
            if (isValid()) {
                AutoScalerNode state = createState();
                try {
                    if (group.isMaster()) {
                        enableMasterZkCache(curator.get());
                        LOGGER.info("AutoScaleController is the master");
                        group.update(state);
                        dataStore.trackConfiguration(runnable);
                        enableTimer();
                        onConfigurationChanged();
                    } else {
                        LOGGER.info("AutoScaleController is not the master");
                        group.update(state);
                        disableTimer();
                        dataStore.untrackConfiguration(runnable);
                        disableMasterZkCache();
                    }
                } catch (IllegalStateException e) {
                // Ignore
                }
            } else {
                LOGGER.info("Not valid with master: " + group.isMaster() + " fabric: " + fabricService.get() + " curator: " + curator.get());
            }
            break;
        case DISCONNECTED:
            dataStore.untrackConfiguration(runnable);
    }
}
Also used : DataStore(io.fabric8.api.DataStore)

Example 3 with DataStore

use of io.fabric8.api.DataStore in project fabric8 by jboss-fuse.

the class ContainerImplTest method testRemoveMissingProfile.

// We should be able to remove a profile that doesn't exist from a container.
// A missing profile may be added to a container during startup (not possible to validate) or after an upgrade / rollback operation.
@Test
@Ignore("[FABRIC-1110] Mocked test makes invalid assumption on the implementation")
public void testRemoveMissingProfile() throws Exception {
    String v = "1.0";
    String profile1Id = "feature-camel";
    String profile2Id = "feature-cxf";
    String missing = "missing";
    // new VersionImpl(v, fabricService);
    Version version = null;
    List<String> profiles = Arrays.asList(profile1Id, profile2Id, missing);
    List<String> profilesToSet = Arrays.asList(profile1Id, profile2Id);
    expect(profileService.getRequiredVersion(eq(v))).andReturn(version).anyTimes();
    expect(dataStore.getContainerVersion(eq(CONTAINER_ID))).andReturn(v).anyTimes();
    expect(dataStore.getContainerProfiles(eq(CONTAINER_ID))).andReturn(profiles).anyTimes();
    expect(profileRegistry.hasProfile(v, profile1Id)).andReturn(true).anyTimes();
    expect(profileRegistry.hasProfile(v, profile2Id)).andReturn(true).anyTimes();
    expect(profileRegistry.hasProfile(v, missing)).andReturn(false).anyTimes();
    // expect(profileRegistry.getProfileAttributes(eq(v), EasyMock.<String>anyObject())).andReturn(Maps.<String, String>newHashMap()).anyTimes();
    dataStore.setContainerProfiles(eq(CONTAINER_ID), eq(profilesToSet));
    expectLastCall().once();
    replay(fabricService);
    replay(dataStore);
    container.removeProfiles(missing);
    verify(fabricService);
    verify(dataStore);
}
Also used : Version(io.fabric8.api.Version) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 4 with DataStore

use of io.fabric8.api.DataStore in project fabric8 by jboss-fuse.

the class ContainerImplTest method testGetMultipleProfiles.

@Test
@Ignore("[FABRIC-1110] Mocked test makes invalid assumption on the implementation")
public void testGetMultipleProfiles() throws Exception {
    String v = "1.0";
    String profile1Id = "feature-camel";
    String profile2Id = "feature-cxf";
    // new VersionImpl(v, fabricService);
    Version version = null;
    List<String> profiles = Arrays.asList(profile1Id, profile2Id);
    expect(profileService.getRequiredVersion(eq(v))).andReturn(version).anyTimes();
    expect(dataStore.getContainerVersion(eq(CONTAINER_ID))).andReturn(v).anyTimes();
    expect(dataStore.getContainerProfiles(eq(CONTAINER_ID))).andReturn(profiles).anyTimes();
    expect(profileRegistry.hasProfile(v, profile1Id)).andReturn(true).anyTimes();
    expect(profileRegistry.hasProfile(v, profile2Id)).andReturn(true).anyTimes();
    replay(fabricService);
    replay(dataStore);
    Profile[] p = container.getProfiles();
    assertNotNull(p);
    assertEquals(2, p.length);
    assertEquals(profile1Id, p[0].getId());
    assertEquals(profile2Id, p[1].getId());
    verify(fabricService);
    verify(dataStore);
}
Also used : Version(io.fabric8.api.Version) Profile(io.fabric8.api.Profile) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 5 with DataStore

use of io.fabric8.api.DataStore in project fabric8 by jboss-fuse.

the class ContainerImplTest method setUp.

@Before
public void setUp() {
    fabricService = createMock(FabricService.class);
    dataStore = createMock(DataStore.class);
    expect(fabricService.adapt(DataStore.class)).andReturn(dataStore).anyTimes();
    container = new ContainerImpl(null, CONTAINER_ID, fabricService);
}
Also used : FabricService(io.fabric8.api.FabricService) ContainerImpl(io.fabric8.internal.ContainerImpl) DataStore(io.fabric8.api.DataStore) Before(org.junit.Before)

Aggregations

Test (org.junit.Test)11 Version (io.fabric8.api.Version)8 Ignore (org.junit.Ignore)7 DataStore (io.fabric8.api.DataStore)6 Profile (io.fabric8.api.Profile)5 Before (org.junit.Before)5 FabricService (io.fabric8.api.FabricService)4 PlaceholderResolver (io.fabric8.api.PlaceholderResolver)4 ContainerImpl (io.fabric8.internal.ContainerImpl)4 File (java.io.File)4 IOException (java.io.IOException)4 DataStoreTemplate (io.fabric8.api.DataStoreTemplate)3 ProfileBuilder (io.fabric8.api.ProfileBuilder)3 RuntimeProperties (io.fabric8.api.RuntimeProperties)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 CuratorFramework (org.apache.curator.framework.CuratorFramework)3 Container (io.fabric8.api.Container)2 FabricException (io.fabric8.api.FabricException)2 GitContext (io.fabric8.api.GitContext)2