/**
* Licensed to Cloudera, Inc. under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. Cloudera, Inc. licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cloudera.flume.handlers.syslog;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
/**
* Previously there were intermittent problems with opening and closing and
* reopening this sink. These tests exercise those scenarios. (resulted in major
* rewrite of multithreaded syslog tcp source.)
*
* @author jon
*
*/
public class TestSyslogTcpSourceThreads {
/*
* A previous version with have problems when opening and closing this kind of
* sink
*/
@Test
public void testOpenCloseSame() throws IOException {
SyslogTcpSourceThreads svr = new SyslogTcpSourceThreads(5140);
for (int i = 0; i < 100; i++) {
SyslogTcpSourceThreads.LOG.info("same source opening " + i);
svr.open();
SyslogTcpSourceThreads.LOG.info("same source closing " + i);
svr.close();
}
}
@Test
public void testOpenCloseNew() throws IOException {
for (int i = 0; i < 100; i++) {
SyslogTcpSourceThreads srv = new SyslogTcpSourceThreads(5140);
SyslogTcpSourceThreads.LOG.info("new Source opening " + i);
srv.open();
SyslogTcpSourceThreads.LOG.info("new Source closing " + i);
srv.close();
}
}
public void testOpenMultipleSamePort() throws IOException {
SyslogTcpSourceThreads srv1 = new SyslogTcpSourceThreads(5140);
SyslogTcpSourceThreads srv2 = new SyslogTcpSourceThreads(5140);
srv1.open();
try {
srv2.open();
} catch (IOException e) {
// Expect 1st to succeed but 2nd to fail because of port conflict
return;
} finally {
srv2.close();
srv1.close();
}
Assert.fail("this is not supposed to happen");
}
@Test
public void testOpenMultipleDiffPort() throws IOException {
SyslogTcpSourceThreads srv1 = new SyslogTcpSourceThreads(5140);
SyslogTcpSourceThreads srv2 = new SyslogTcpSourceThreads(5141);
try {
srv1.open();
srv2.open();
} catch (IOException e) {
Assert.fail("this is not supposed to happen");
} finally {
srv2.close();
srv1.close();
}
}
}