package com.cloudera.flume.agent.diskfailover;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import com.cloudera.flume.agent.FlumeNode;
import com.cloudera.flume.conf.Context;
import com.cloudera.flume.core.Event;
import com.cloudera.flume.core.EventImpl;
import com.cloudera.flume.core.EventSink;
import com.cloudera.flume.core.EventSource;
import com.cloudera.flume.core.EventUtil;
import com.cloudera.flume.handlers.rolling.ProcessTagger;
import com.cloudera.flume.handlers.rolling.TimeTrigger;
import com.cloudera.flume.reporter.ReportEvent;
import com.cloudera.util.BenchmarkHarness;
@Before
BenchmarkHarness.setupLocalWriteDir();
}
@After
BenchmarkHarness.setupLocalWriteDir();
}
@Test
EventSink msnk = mock(EventSink.class);
doNothing().when(msnk).open();
doNothing().when(msnk).close();
doNothing().doThrow(new IOException("foo")).doNothing().when(msnk).append(
Mockito.<Event> anyObject());
doReturn(new ReportEvent("blah")).when(msnk).getReport();
Event e1 = new EventImpl(new byte[0]);
Event e2 = new EventImpl(new byte[0]);
Event e3 = new EventImpl(new byte[0]);
EventSource msrc = mock(EventSource.class);
doNothing().when(msrc).open();
doNothing().when(msrc).close();
when(msrc.next()).thenReturn(e1).thenReturn(e2).thenReturn(e3).thenReturn(
null);
DiskFailoverDeco<EventSink> snk = new DiskFailoverDeco<EventSink>(msnk,
FlumeNode.getInstance().getDFOManager(), new TimeTrigger(
new ProcessTagger(), 60000), 300000);
snk.open();
try {
EventUtil.dumpAll(msrc, snk);
snk.close();
} catch (IOException ioe) {
return;
}
fail("Expected IO exception to percolate to this thread");
}
@Test
DiskFailoverDeco.builder().build(new Context());
DiskFailoverDeco.builder().build(new Context(), "1000");
}
@Test(expected = IllegalArgumentException.class)
DiskFailoverDeco.builder().build(new Context(), "12341", "foo");
}
@Test(expected = IllegalArgumentException.class)
DiskFailoverDeco.builder().build(new Context(), "foo");
}
}