| /******************************************************************************* |
| * 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); |
| } |
| } |