/* * Sakuli - Testing and Monitoring-Tool for Websites and common UIs. * * Copyright 2013 - 2016 the original author or authors. * * Licensed 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 org.sakuli.services.forwarder.icinga2.model.builder; import org.apache.commons.lang.time.DateUtils; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.sakuli.builder.TestCaseExampleBuilder; import org.sakuli.builder.TestCaseStepExampleBuilder; import org.sakuli.builder.TestSuiteExampleBuilder; import org.sakuli.datamodel.TestSuite; import org.sakuli.datamodel.state.TestCaseState; import org.sakuli.datamodel.state.TestCaseStepState; import org.sakuli.datamodel.state.TestSuiteState; import org.sakuli.exceptions.SakuliException; import org.sakuli.services.forwarder.MonitoringPropertiesTestHelper; import org.sakuli.services.forwarder.ScreenshotDivConverter; import org.sakuli.services.forwarder.icinga2.Icinga2Properties; import org.springframework.test.util.ReflectionTestUtils; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.Collections; import java.util.Date; /** * @author tschneck * Date: 2/24/16 */ public class Icinga2OutputBuilderTest { @Mock private Icinga2Properties properties; @Mock private ScreenshotDivConverter screenshotDivConverter; @InjectMocks private Icinga2OutputBuilder testling; @BeforeMethod public void setUp() throws Exception { MockitoAnnotations.initMocks(this); MonitoringPropertiesTestHelper.initMonitoringMock(properties); } @Test public void testBuildOk() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.OK) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[OK] Sakuli suite \"TEST-SUITE-ID\" ok (120.00s). (Last suite run: 17.08.14 14:02:00)\n" + "[OK] case \"TEST-CASE-ID\" ran in 3.00s - ok"); } @Test public void testBuildErrorInSuite() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.ERRORS) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.OK) .buildExample())) .withException(new SakuliException("MY-TEST-ERROR-SUITE")) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" (120.00s) EXCEPTION: 'MY-TEST-ERROR-SUITE'. (Last suite run: 17.08.14 14:02:00)\n" + "[OK] case \"TEST-CASE-ID\" ran in 3.00s - ok"); } @Test public void testBuildErrorInCase() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.ERRORS) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.ERRORS) .withException(new SakuliException("MY-TEST-ERROR-CASE")) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" (120.00s) EXCEPTION: 'CASE \"TEST-CASE-ID\": MY-TEST-ERROR-CASE'. (Last suite run: 17.08.14 14:02:00)\n" + "[CRIT] case \"TEST-CASE-ID\" EXCEPTION: MY-TEST-ERROR-CASE"); } @Test public void testBuildErrorInCaseMaxLength() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.ERRORS) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.ERRORS) .withException(new SakuliException("MY-TEST-ERROR-CASE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" (120.00s) EXCEPTION: 'CASE \"TEST-CASE-ID\": MY-TEST-ERROR-CASE " + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...\n" + "[CRIT] case \"TEST-CASE-ID\" EXCEPTION: MY-TEST-ERROR-CASE " + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); } @Test public void testBuildErrorInStep() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.ERRORS) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.ERRORS) .withTestCaseSteps(Collections.singletonList( new TestCaseStepExampleBuilder() .withState(TestCaseStepState.ERRORS) .withException(new SakuliException("MY-TEST-ERROR-IN-STEP")) .buildExample() )) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" (120.00s) EXCEPTION: 'CASE \"TEST-CASE-ID\": STEP \"step_for_unit_test\": MY-TEST-ERROR-IN-STEP'. (Last suite run: 17.08.14 14:02:00)\n" + "[CRIT] case \"TEST-CASE-ID\" EXCEPTION: STEP \"step_for_unit_test\": MY-TEST-ERROR-IN-STEP"); } @Test public void testBuildCritical() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.CRITICAL_IN_SUITE) .withCriticalTime(100) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.OK) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" critical (120.00s/crit at 100s). (Last suite run: 17.08.14 14:02:00)\n" + "[OK] case \"TEST-CASE-ID\" ran in 3.00s - ok"); } @Test public void testBuildCriticalInCase() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.CRITICAL_IN_CASE) .withCriticalTime(140) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.CRITICAL) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[CRIT] Sakuli suite \"TEST-SUITE-ID\" critical in case, case \"Unit Test Case\" over runtime (3.00s/crit at 5s). (Last suite run: 17.08.14 14:02:00)\n" + "[CRIT] case \"TEST-CASE-ID\" over runtime (3.00s/crit at 5s)"); } @Test public void testBuildWarningInSuite() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.WARNING_IN_SUITE) .withId("TEST-SUITE-ID") .withWarningTime(100) .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.OK) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[WARN] Sakuli suite \"TEST-SUITE-ID\" warning (120.00s/warn at 100s). (Last suite run: 17.08.14 14:02:00)\n" + "[OK] case \"TEST-CASE-ID\" ran in 3.00s - ok"); } @Test public void testBuildWarningInStep() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.WARNING_IN_STEP) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withStopDate(DateUtils.addSeconds(new Date(), 4)) .withState(TestCaseState.WARNING_IN_STEP) .withWarningTime(5) .withTestCaseSteps(Collections.singletonList( new TestCaseStepExampleBuilder() .withName("TEST-STEP-ID") .withWarningTime(2) .withState(TestCaseStepState.WARNING) .buildExample() )) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[WARN] Sakuli suite \"TEST-SUITE-ID\" warning in step, step \"TEST-STEP-ID\" over runtime (3.00s/warn at 2s). (Last suite run: 17.08.14 14:02:00)\n" + "[WARN] case \"TEST-CASE-ID\" (4.00s) ok, step \"TEST-STEP-ID\" over runtime (3.00s/warn at 2s)"); } @Test public void testBuildWarningInCase() throws Exception { TestSuite testSuite = new TestSuiteExampleBuilder() .withState(TestSuiteState.WARNING_IN_CASE) .withId("TEST-SUITE-ID") .withTestCases(Collections.singletonList(new TestCaseExampleBuilder() .withId("TEST-CASE-ID") .withState(TestCaseState.WARNING) .buildExample())) .buildExample(); ReflectionTestUtils.setField(testling, "testSuite", testSuite); Assert.assertEquals(testling.build(), "[WARN] Sakuli suite \"TEST-SUITE-ID\" warning in case, case \"Unit Test Case\" over runtime (3.00s/warn at 4s). (Last suite run: 17.08.14 14:02:00)\n" + "[WARN] case \"TEST-CASE-ID\" over runtime (3.00s/warn at 4s)"); } }