package org.cloudifysource.rest.events;
import com.gigaspaces.log.LogEntryMatcher;
import junit.framework.Assert;
import org.cloudifysource.rest.events.cache.EventsCacheKey;
import org.junit.Test;
import org.mockito.Mockito;
import org.openspaces.admin.gsc.GridServiceContainer;
import org.openspaces.admin.zone.config.ExactZonesConfig;
/**
* Created with IntelliJ IDEA.
* User: elip
* Date: 6/8/13
* Time: 2:28 PM
*/
public class LogEntryMatcherProviderTest {
@Test
public void testRemoveAll() throws Exception {
LogEntryMatcherProvider provider = new LogEntryMatcherProvider();
GridServiceContainer mockContainer1 = createMockContainer("containerId1");
GridServiceContainer mockContainer2 = createMockContainer("containerId2");
LogEntryMatcherProviderKey key1 = createKey(mockContainer1, "deploymentId1");
LogEntryMatcherProviderKey key2 = createKey(mockContainer2, "deploymentId1");
// create two entries for the same deployment
LogEntryMatcher logEntryMatcher1BeforeRemoval = getLogEntryMatcher(provider, key1);
LogEntryMatcher logEntryMatcher2BeforeRemoval = getLogEntryMatcher(provider, key2);
// now remove all instances fot the deploymentId
EventsCacheKey key = new EventsCacheKey("deploymentId1");
provider.removeAll(key);
// create two instances for the deployment again/
LogEntryMatcher logEntryMatcher1AfterRemoval = getLogEntryMatcher(provider, key1);
LogEntryMatcher logEntryMatcher2AfterRemoval = getLogEntryMatcher(provider, key2);
// make sure before and after are different instances
Assert.assertNotSame(logEntryMatcher1BeforeRemoval, logEntryMatcher1AfterRemoval);
Assert.assertNotSame(logEntryMatcher2BeforeRemoval, logEntryMatcher2AfterRemoval);
}
@Test
public void testGet() throws Exception {
LogEntryMatcherProvider provider = new LogEntryMatcherProvider();
GridServiceContainer mockContainer = createMockContainer("containerUid");
LogEntryMatcherProviderKey key1 = createKey(mockContainer, "deploymentId1");
LogEntryMatcherProviderKey key2 = createKey(mockContainer, "deploymentId2");
// test get with existing entry returns the existing entry
Assert.assertEquals(getLogEntryMatcher(provider, key1), getLogEntryMatcher(provider, key1));
// test get for two different keys returns different instances
Assert.assertNotSame(getLogEntryMatcher(provider, key1), getLogEntryMatcher(provider, key2));
}
private LogEntryMatcher getLogEntryMatcher(final LogEntryMatcherProvider provider,
final LogEntryMatcherProviderKey key) {
return provider.get(key);
}
private LogEntryMatcherProviderKey createKey(final GridServiceContainer mockContainer,
final String deploymentId) {
LogEntryMatcherProviderKey key = new LogEntryMatcherProviderKey();
key.setContainer(mockContainer);
key.setDeploymentId(deploymentId);
return key;
}
private GridServiceContainer createMockContainer(final String containerUid) {
GridServiceContainer mockContainer = Mockito.mock(GridServiceContainer.class);
Mockito.when(mockContainer.getUid()).thenReturn(containerUid);
Mockito.when(mockContainer.getExactZones()).thenReturn(new ExactZonesConfig());
return mockContainer;
}
}