package com.intrbiz.bergamot.virtual; import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.Matchers.*; import java.util.List; import org.junit.Test; import com.intrbiz.bergamot.virtual.operator.VirtualCheckOperator; import com.intrbiz.bergamot.virtual.reference.AnonymousService; import com.intrbiz.bergamot.virtual.reference.AnonymousTrap; import com.intrbiz.bergamot.virtual.reference.CheckReference; import com.intrbiz.bergamot.virtual.reference.HostByName; import com.intrbiz.bergamot.virtual.reference.ServiceByName; import com.intrbiz.bergamot.virtual.reference.TrapByName; public class TestVirtualCheckExpressionParser { @Test public void testParseCase1() { VirtualCheckOperator op = VirtualCheckExpressionParser.parseVirtualCheckExpression("case when host 'vm1' is OK then OK when host 'vm1' is WARNING then OK else CRITICAL end"); assertThat(op.toString(), is(equalTo("case when host 'vm1' is OK then OK when host 'vm1' is WARNING then OK else CRITICAL end"))); } @Test public void testParseOneOf1() { VirtualCheckOperator op = VirtualCheckExpressionParser.parseVirtualCheckExpression("one of [ host 'vm1', host 'vm2', host 'vm3', host 'vm4' ] as WARNING"); assertThat(op.toString(), is(equalTo("one of [host 'vm1', host 'vm2', host 'vm3', host 'vm4'] as WARNING"))); } @Test public void testParseAnyOf1() { VirtualCheckOperator op = VirtualCheckExpressionParser.parseVirtualCheckExpression("any of [ host 'vm1', host 'vm2', host 'vm3', host 'vm4' ]"); assertThat(op.toString(), is(equalTo("any of [host 'vm1', host 'vm2', host 'vm3', host 'vm4']"))); } @Test public void testParseAllOf1() { VirtualCheckOperator op = VirtualCheckExpressionParser.parseVirtualCheckExpression("all of [ host 'vm1', host 'vm2', host 'vm3', host 'vm4' ]"); assertThat(op.toString(), is(equalTo("all of [host 'vm1', host 'vm2', host 'vm3', host 'vm4']"))); } @Test public void testParseCount1() { VirtualCheckOperator op = VirtualCheckExpressionParser.parseVirtualCheckExpression("count OK of [ host 'vm1', host 'vm2', host 'vm3', host 'vm4' ] is == 1"); assertThat(op.toString(), is(equalTo("count OK of [host 'vm1', host 'vm2', host 'vm3', host 'vm4'] is == 1 as CRITICAL"))); } @Test public void testParseAnonymousServiceParent() { List<CheckReference> refs = VirtualCheckExpressionParser.parseParentsExpression("service 'check_sshd'"); assertThat(refs, is(notNullValue())); assertThat(refs.size(), is(equalTo(1))); assertThat(refs.get(0), is(notNullValue())); assertThat(refs.get(0), is(instanceOf(AnonymousService.class))); assertThat(refs.get(0), is(hasProperty("name", equalTo("check_sshd")))); } @Test public void testParseAnonymousTrapParent() { List<CheckReference> refs = VirtualCheckExpressionParser.parseParentsExpression("trap 'port_e1/1'"); assertThat(refs, is(notNullValue())); assertThat(refs.size(), is(equalTo(1))); assertThat(refs.get(0), is(notNullValue())); assertThat(refs.get(0), is(instanceOf(AnonymousTrap.class))); assertThat(refs.get(0), is(hasProperty("name", equalTo("port_e1/1")))); } @Test public void testParseAnonymousServiceAndTrapParent() { List<CheckReference> refs = VirtualCheckExpressionParser.parseParentsExpression("service 'check_sshd', trap 'port_g1/48'"); assertThat(refs, is(notNullValue())); assertThat(refs.size(), is(equalTo(2))); assertThat(refs.get(0), is(notNullValue())); assertThat(refs.get(0), is(instanceOf(AnonymousService.class))); assertThat(refs.get(0), is(hasProperty("name", equalTo("check_sshd")))); assertThat(refs.get(1), is(notNullValue())); assertThat(refs.get(1), is(instanceOf(AnonymousTrap.class))); assertThat(refs.get(1), is(hasProperty("name", equalTo("port_g1/48")))); } @Test public void testParseServiceAndAnonymousServiceParent() { List<CheckReference> refs = VirtualCheckExpressionParser.parseParentsExpression("service 'ping', service 'ping' on host 'default_gateway', service 'ping'"); assertThat(refs, is(notNullValue())); assertThat(refs.size(), is(equalTo(3))); assertThat(refs.get(0), is(notNullValue())); assertThat(refs.get(0), is(instanceOf(AnonymousService.class))); assertThat(refs.get(0), is(hasProperty("name", equalTo("ping")))); assertThat(refs.get(1), is(notNullValue())); assertThat(refs.get(1), is(instanceOf(ServiceByName.class))); assertThat(refs.get(1), is(hasProperty("name", equalTo("ping")))); assertThat(refs.get(1), is(hasProperty("host", is(instanceOf(HostByName.class))))); assertThat(refs.get(1), is(hasProperty("host", hasProperty("name", equalTo("default_gateway"))))); assertThat(refs.get(2), is(notNullValue())); assertThat(refs.get(2), is(instanceOf(AnonymousService.class))); assertThat(refs.get(2), is(hasProperty("name", equalTo("ping")))); } @Test public void testParseTrapAndAnonymousTrapParent() { List<CheckReference> refs = VirtualCheckExpressionParser.parseParentsExpression("trap 'port_1', trap 'port_2' on host 'sw1', trap 'port_3'"); assertThat(refs, is(notNullValue())); assertThat(refs.size(), is(equalTo(3))); assertThat(refs.get(0), is(notNullValue())); assertThat(refs.get(0), is(instanceOf(AnonymousTrap.class))); assertThat(refs.get(0), is(hasProperty("name", equalTo("port_1")))); assertThat(refs.get(1), is(notNullValue())); assertThat(refs.get(1), is(instanceOf(TrapByName.class))); assertThat(refs.get(1), is(hasProperty("name", equalTo("port_2")))); assertThat(refs.get(1), is(hasProperty("host", is(instanceOf(HostByName.class))))); assertThat(refs.get(1), is(hasProperty("host", hasProperty("name", equalTo("sw1"))))); assertThat(refs.get(2), is(notNullValue())); assertThat(refs.get(2), is(instanceOf(AnonymousTrap.class))); assertThat(refs.get(2), is(hasProperty("name", equalTo("port_3")))); } }