blob: 79e2794a59061af104ca29ea1d4afd0eb7eb4026 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.medic.dump.impl;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import org.eclipse.virgo.medic.dump.Dump;
import org.eclipse.virgo.medic.dump.DumpContributor;
import org.eclipse.virgo.medic.dump.DumpGenerationFailedException;
import org.eclipse.virgo.medic.dump.DumpGenerator;
import org.eclipse.virgo.medic.dump.impl.DumpContributorResolver;
import org.eclipse.virgo.medic.dump.impl.StandardDumpGenerator;
import org.eclipse.virgo.medic.eventlog.EventLogger;
import org.eclipse.virgo.medic.impl.config.ConfigurationProvider;
import org.junit.Test;
public class StandardDumpGeneratorTests {
@Test
public void dumpGeneration() throws DumpGenerationFailedException {
Map<String, Object> context = new HashMap<String, Object>();
EventLogger eventLogger = createMock(EventLogger.class);
DumpContributorResolver accessor = createMock(DumpContributorResolver.class);
DumpContributor dumpContributor1 = createMock(DumpContributor.class);
expect(accessor.getDumpContributors()).andReturn(Arrays.asList(dumpContributor1));
dumpContributor1.contribute(isA(Dump.class));
expectLastCall();
context = new HashMap<String, Object>();
context.put("key", "value");
dumpContributor1.contribute(isA(Dump.class));
expect(dumpContributor1.getName()).andReturn("dc1").anyTimes();
DumpContributor dumpContributor2 = createMock(DumpContributor.class);
dumpContributor2.contribute(isA(Dump.class));
expect(dumpContributor2.getName()).andReturn("dc2").anyTimes();
DumpContributor dumpContributor3 = createMock(DumpContributor.class);
dumpContributor3.contribute(isA(Dump.class));
expectLastCall().andThrow(new RuntimeException());
expect(dumpContributor3.getName()).andReturn("dc3").anyTimes();
expect(accessor.getDumpContributors()).andReturn(Arrays.asList(dumpContributor1, dumpContributor2, dumpContributor3));
ConfigurationProvider configurationProvider = createMock(ConfigurationProvider.class);
Dictionary<String, Object> configuration = new Hashtable<String, Object>();
configuration.put(ConfigurationProvider.KEY_DUMP_ROOT_DIRECTORY, "build");
expect(configurationProvider.getConfiguration()).andReturn(configuration).anyTimes();
replay(accessor, dumpContributor1, dumpContributor2, dumpContributor3, configurationProvider);
DumpGenerator dumpGenerator = new StandardDumpGenerator(accessor, configurationProvider, eventLogger);
dumpGenerator.generateDump("foo");
dumpGenerator.generateDump("bar", context);
verify(accessor, dumpContributor1, dumpContributor2, dumpContributor3, configurationProvider);
}
@Test
public void singleExclusion() throws DumpGenerationFailedException {
EventLogger eventLogger = createMock(EventLogger.class);
DumpContributorResolver accessor = createMock(DumpContributorResolver.class);
DumpContributor dumpContributor1 = createMock(DumpContributor.class);
expect(accessor.getDumpContributors()).andReturn(Arrays.asList(dumpContributor1)).times(2);
dumpContributor1.contribute(isA(Dump.class));
expect(dumpContributor1.getName()).andReturn("dc1").times(2);
ConfigurationProvider configurationProvider = createMock(ConfigurationProvider.class);
Dictionary<String, Object> configuration = new Hashtable<String, Object>();
configuration.put("dump.root.directory", "build");
configuration.put("dump.exclusions.foo", "dc1");
expect(configurationProvider.getConfiguration()).andReturn(configuration).anyTimes();
replay(accessor, dumpContributor1, configurationProvider);
DumpGenerator dumpGenerator = new StandardDumpGenerator(accessor, configurationProvider, eventLogger);
dumpGenerator.generateDump("foo");
dumpGenerator.generateDump("bar");
verify(accessor, dumpContributor1, configurationProvider);
}
@Test
public void multipleExclusion() throws DumpGenerationFailedException {
EventLogger eventLogger = createMock(EventLogger.class);
DumpContributorResolver accessor = createMock(DumpContributorResolver.class);
DumpContributor dumpContributor1 = createMock(DumpContributor.class);
DumpContributor dumpContributor2 = createMock(DumpContributor.class);
expect(accessor.getDumpContributors()).andReturn(Arrays.asList(dumpContributor1, dumpContributor2)).times(2);
dumpContributor1.contribute(isA(Dump.class));
dumpContributor2.contribute(isA(Dump.class));
expect(dumpContributor1.getName()).andReturn("dc1").times(2);
expect(dumpContributor2.getName()).andReturn("dc2").times(2);
ConfigurationProvider configurationProvider = createMock(ConfigurationProvider.class);
Dictionary<String, Object> configuration = new Hashtable<String, Object>();
configuration.put("dump.root.directory", "build");
configuration.put("dump.exclusions.foo", "dc1, dc2");
expect(configurationProvider.getConfiguration()).andReturn(configuration).anyTimes();
replay(accessor, dumpContributor1, dumpContributor2, configurationProvider);
DumpGenerator dumpGenerator = new StandardDumpGenerator(accessor, configurationProvider, eventLogger);
dumpGenerator.generateDump("foo");
dumpGenerator.generateDump("bar");
verify(accessor, dumpContributor1, dumpContributor2, configurationProvider);
}
@Test
public void close() {
EventLogger eventLogger = createMock(EventLogger.class);
DumpContributorResolver accessor = createMock(DumpContributorResolver.class);
ConfigurationProvider configurationProvider = createMock(ConfigurationProvider.class);
accessor.close();
replay(accessor, configurationProvider);
StandardDumpGenerator dumpGenerator = new StandardDumpGenerator(accessor, configurationProvider, eventLogger);
dumpGenerator.close();
verify(accessor, configurationProvider);
}
}