Search in sources :

Example 1 with ControlPanelValues

use of com.netflix.exhibitor.core.controlpanel.ControlPanelValues in project exhibitor by soabase.

the class TestMonitorRunningInstance method makeMockExhibitor.

private Exhibitor makeMockExhibitor(InstanceConfig config, String us) {
    Preferences preferences = Mockito.mock(Preferences.class);
    ControlPanelValues controlPanelValues = new ControlPanelValues(preferences) {

        @Override
        public boolean isSet(ControlPanelTypes type) throws Exception {
            return true;
        }
    };
    ConfigManager configManager = Mockito.mock(ConfigManager.class);
    Mockito.when(configManager.getConfig()).thenReturn(config);
    Exhibitor mockExhibitor = Mockito.mock(Exhibitor.class, Mockito.RETURNS_MOCKS);
    Mockito.when(mockExhibitor.getConfigManager()).thenReturn(configManager);
    Mockito.when(mockExhibitor.getThisJVMHostname()).thenReturn(us);
    Mockito.when(mockExhibitor.getControlPanelValues()).thenReturn(controlPanelValues);
    return mockExhibitor;
}
Also used : ControlPanelValues(com.netflix.exhibitor.core.controlpanel.ControlPanelValues) ControlPanelTypes(com.netflix.exhibitor.core.controlpanel.ControlPanelTypes) Exhibitor(com.netflix.exhibitor.core.Exhibitor) Preferences(java.util.prefs.Preferences) ConfigManager(com.netflix.exhibitor.core.config.ConfigManager)

Example 2 with ControlPanelValues

use of com.netflix.exhibitor.core.controlpanel.ControlPanelValues in project exhibitor by soabase.

the class TestRollingChangeStaging method internalTest.

private void internalTest(final int attempts) throws Exception {
    final Semaphore restartLatch = new Semaphore(0);
    TestProcessOperations mockOperations1 = new TestProcessOperations();
    TestProcessOperations mockOperations2 = new TestProcessOperations();
    TestProcessOperations mockOperations3 = new TestProcessOperations();
    final InstanceConfig defaultInstanceConfig = DefaultProperties.newDefaultInstanceConfig(null);
    final InstanceConfig instanceConfig = new InstanceConfig() {

        @Override
        public String getString(StringConfigs config) {
            if (config == StringConfigs.SERVERS_SPEC) {
                return "1:one,2:two,3:three";
            }
            if ((config == StringConfigs.ZOOKEEPER_DATA_DIRECTORY) || (config == StringConfigs.ZOOKEEPER_INSTALL_DIRECTORY)) {
                return "foo";
            }
            return defaultInstanceConfig.getString(config);
        }

        @Override
        public int getInt(IntConfigs config) {
            if (config == IntConfigs.CHECK_MS) {
                return 1;
            }
            return defaultInstanceConfig.getInt(config);
        }
    };
    Properties properties = DefaultProperties.getFromInstanceConfig(instanceConfig);
    ConfigCollection configCollection = new PropertyBasedInstanceConfig(properties, new Properties());
    LoadedInstanceConfig loadedInstanceConfig = new LoadedInstanceConfig(configCollection, 1);
    final AtomicReference<LoadedInstanceConfig> providerConfig = new AtomicReference<LoadedInstanceConfig>(loadedInstanceConfig);
    ConfigProvider mockConfigProvider = new ConfigProvider() {

        @Override
        public void start() throws Exception {
        }

        @Override
        public LoadedInstanceConfig loadConfig() throws Exception {
            return providerConfig.get();
        }

        @Override
        public LoadedInstanceConfig storeConfig(ConfigCollection config, long compareVersion) throws Exception {
            LoadedInstanceConfig loadedInstanceConfig = new LoadedInstanceConfig(config, compareVersion + 1);
            providerConfig.set(loadedInstanceConfig);
            return loadedInstanceConfig;
        }

        @Override
        public PseudoLock newPseudoLock() throws Exception {
            return new PseudoLock() {

                @Override
                public boolean lock(ActivityLog log, long maxWait, TimeUnit unit) throws Exception {
                    return true;
                }

                @Override
                public void unlock() throws Exception {
                }
            };
        }

        @Override
        public void close() throws IOException {
        }
    };
    ControlPanelValues mockControlPanelValues = Mockito.mock(ControlPanelValues.class);
    Mockito.when(mockControlPanelValues.isSet(Mockito.any(ControlPanelTypes.class))).thenReturn(true);
    ActivityQueue activityQueue = new ActivityQueue();
    final Queue<AssertionError> exceptions = Queues.newConcurrentLinkedQueue();
    Exhibitor mockExhibitor1 = Mockito.mock(Exhibitor.class, Mockito.RETURNS_MOCKS);
    Mockito.when(mockExhibitor1.getActivityQueue()).thenReturn(activityQueue);
    ConfigManager configManager1 = new TestConfigManager(mockExhibitor1, mockConfigProvider);
    Mockito.when(mockExhibitor1.getConfigManager()).thenReturn(configManager1);
    MonitorRunningInstance monitorRunningInstance1 = new MockMonitorRunningInstance(mockExhibitor1, providerConfig, "one", restartLatch, exceptions);
    Mockito.when(mockExhibitor1.getMonitorRunningInstance()).thenReturn(monitorRunningInstance1);
    Mockito.when(mockExhibitor1.getThisJVMHostname()).thenReturn("one");
    Mockito.when(mockExhibitor1.getProcessOperations()).thenReturn(mockOperations1);
    Mockito.when(mockExhibitor1.getControlPanelValues()).thenReturn(mockControlPanelValues);
    Exhibitor mockExhibitor2 = Mockito.mock(Exhibitor.class, Mockito.RETURNS_MOCKS);
    Mockito.when(mockExhibitor2.getActivityQueue()).thenReturn(activityQueue);
    ConfigManager configManager2 = new TestConfigManager(mockExhibitor2, mockConfigProvider);
    Mockito.when(mockExhibitor2.getConfigManager()).thenReturn(configManager2);
    MonitorRunningInstance monitorRunningInstance2 = new MockMonitorRunningInstance(mockExhibitor2, providerConfig, "two", restartLatch, exceptions);
    Mockito.when(mockExhibitor2.getMonitorRunningInstance()).thenReturn(monitorRunningInstance2);
    Mockito.when(mockExhibitor2.getThisJVMHostname()).thenReturn("two");
    Mockito.when(mockExhibitor2.getProcessOperations()).thenReturn(mockOperations2);
    Mockito.when(mockExhibitor2.getControlPanelValues()).thenReturn(mockControlPanelValues);
    Exhibitor mockExhibitor3 = Mockito.mock(Exhibitor.class, Mockito.RETURNS_MOCKS);
    Mockito.when(mockExhibitor3.getActivityQueue()).thenReturn(activityQueue);
    ConfigManager configManager3 = new TestConfigManager(mockExhibitor3, mockConfigProvider);
    Mockito.when(mockExhibitor3.getConfigManager()).thenReturn(configManager3);
    MonitorRunningInstance monitorRunningInstance3 = new MockMonitorRunningInstance(mockExhibitor3, providerConfig, "three", restartLatch, exceptions);
    Mockito.when(mockExhibitor3.getMonitorRunningInstance()).thenReturn(monitorRunningInstance3);
    Mockito.when(mockExhibitor3.getThisJVMHostname()).thenReturn("three");
    Mockito.when(mockExhibitor3.getProcessOperations()).thenReturn(mockOperations3);
    Mockito.when(mockExhibitor3.getControlPanelValues()).thenReturn(mockControlPanelValues);
    try {
        activityQueue.start();
        configManager1.start();
        configManager2.start();
        configManager3.start();
        monitorRunningInstance1.start();
        monitorRunningInstance2.start();
        monitorRunningInstance3.start();
        Thread.sleep(1000);
        for (int i = 0; i < attempts; ++i) {
            Assert.assertEquals(restartLatch.availablePermits(), 0);
            final int index = i;
            InstanceConfig changedInstanceConfig = new InstanceConfig() {

                @Override
                public String getString(StringConfigs config) {
                    if (config == StringConfigs.LOG4J_PROPERTIES) {
                        return "something different " + index;
                    }
                    return instanceConfig.getString(config);
                }

                @Override
                public int getInt(IntConfigs config) {
                    return instanceConfig.getInt(config);
                }
            };
            configManager1.startRollingConfig(changedInstanceConfig, "one");
            Assert.assertTrue(restartLatch.tryAcquire(1, 10, TimeUnit.SECONDS));
            if (exceptions.size() > 0) {
                for (AssertionError assertionError : exceptions) {
                    assertionError.printStackTrace();
                }
                Assert.fail("Failed restart assertions");
            }
        }
    } finally {
        CloseableUtils.closeQuietly(monitorRunningInstance3);
        CloseableUtils.closeQuietly(monitorRunningInstance2);
        CloseableUtils.closeQuietly(monitorRunningInstance1);
        CloseableUtils.closeQuietly(configManager3);
        CloseableUtils.closeQuietly(configManager2);
        CloseableUtils.closeQuietly(configManager1);
        CloseableUtils.closeQuietly(activityQueue);
    }
}
Also used : ControlPanelTypes(com.netflix.exhibitor.core.controlpanel.ControlPanelTypes) Semaphore(java.util.concurrent.Semaphore) Properties(java.util.Properties) MonitorRunningInstance(com.netflix.exhibitor.core.state.MonitorRunningInstance) Exhibitor(com.netflix.exhibitor.core.Exhibitor) TimeUnit(java.util.concurrent.TimeUnit) ControlPanelValues(com.netflix.exhibitor.core.controlpanel.ControlPanelValues) ActivityLog(com.netflix.exhibitor.core.activity.ActivityLog) AtomicReference(java.util.concurrent.atomic.AtomicReference) ActivityQueue(com.netflix.exhibitor.core.activity.ActivityQueue)

Aggregations

Exhibitor (com.netflix.exhibitor.core.Exhibitor)2 ControlPanelTypes (com.netflix.exhibitor.core.controlpanel.ControlPanelTypes)2 ControlPanelValues (com.netflix.exhibitor.core.controlpanel.ControlPanelValues)2 ActivityLog (com.netflix.exhibitor.core.activity.ActivityLog)1 ActivityQueue (com.netflix.exhibitor.core.activity.ActivityQueue)1 ConfigManager (com.netflix.exhibitor.core.config.ConfigManager)1 MonitorRunningInstance (com.netflix.exhibitor.core.state.MonitorRunningInstance)1 Properties (java.util.Properties)1 Semaphore (java.util.concurrent.Semaphore)1 TimeUnit (java.util.concurrent.TimeUnit)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Preferences (java.util.prefs.Preferences)1