/**
* Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.seedstack.seed.core;
import org.junit.Rule;
import org.junit.Test;
import org.seedstack.seed.diagnostic.DiagnosticManager;
import org.seedstack.shed.exception.ErrorCode;
import org.seedstack.seed.SeedException;
import org.seedstack.seed.core.rules.SeedITRule;
import javax.inject.Inject;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
public class DiagnosticManagerIT {
@Rule
public SeedITRule rule = new SeedITRule(this);
@Inject
DiagnosticManager diagnosticManager;
@Test
public void diagnostic_manager_is_injected() {
assertThat(diagnosticManager).isNotNull();
}
@Test
@SuppressWarnings("unchecked")
public void diagnostic_system_information_is_present() {
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(null);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> systemInfo = (Map<String, Object>) diagnosticInfo.get("system");
assertThat(systemInfo).isNotNull();
assertThat((Integer) systemInfo.get("processors")).isGreaterThan(0);
assertThat((Map<String, Long>) systemInfo.get("memory")).isNotEmpty();
assertThat((List<String>) systemInfo.get("args")).isNotNull();
assertThat(systemInfo.get("startTime")).isNotNull();
assertThat(systemInfo.get("diagnosticTime")).isNotNull();
assertThat((Map<String, String>) systemInfo.get("properties")).isNotEmpty();
assertThat((Map<Long, Object>) systemInfo.get("threads")).isNotEmpty();
}
@Test
@SuppressWarnings("unchecked")
public void kernel_info_is_present() {
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(null);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> seedInfo = (Map<String, Object>) diagnosticInfo.get("kernel");
assertThat((Set<URL>) (seedInfo.get("scannedUrls"))).isNotEmpty();
assertThat((Set<URL>) (seedInfo.get("failedUrls"))).isNotNull();
}
@Test
@SuppressWarnings("unchecked")
public void seed_info_is_present() {
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(null);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> seedInfo = (Map<String, Object>) diagnosticInfo.get("seed");
assertThat((String) (seedInfo.get("version"))).isNotEmpty();
assertThat((Set<String>) (seedInfo.get("inconsistentPlugins"))).isNotNull();
assertThat((String) (seedInfo.get("contextClass"))).isNotEmpty();
assertThat(seedInfo.get("configuration")).isNotNull();
}
@Test
@SuppressWarnings("unchecked")
public void diagnostic_exception_information_is_present() {
SeedException seedException = SeedException.createNew(TestErrorCode.TEST_CODE);
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(seedException);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> exceptionInfo = (Map<String, Object>) diagnosticInfo.get("exception");
assertThat(exceptionInfo.get("message")).isEqualTo(seedException.getMessage());
assertThat(exceptionInfo.get("description")).isEqualTo(seedException.getDescription());
assertThat(exceptionInfo.get("fix")).isNull();
assertThat(exceptionInfo.get("class")).isEqualTo(seedException.getClass().getCanonicalName());
assertThat((List<String>) exceptionInfo.get("stacktrace")).isNotEmpty();
assertThat((List<Object>) exceptionInfo.get("causes")).isEmpty();
}
@Test
@SuppressWarnings("unchecked")
public void diagnostic_application_information_is_present() {
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(null);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> applicationInfo = (Map<String, Object>) diagnosticInfo.get("application");
assertThat(applicationInfo).isNotNull();
assertThat(applicationInfo.get("id")).isNotNull();
assertThat(applicationInfo.get("name")).isNotNull();
assertThat(applicationInfo.get("version")).isNotNull();
assertThat(applicationInfo.get("storage-location")).isNull();
}
@Test
@SuppressWarnings("unchecked")
public void diagnostic_information_from_scanned_collectors_is_present() {
Map<String, Object> diagnosticInfo = diagnosticManager.getDiagnosticInfo(null);
assertThat(diagnosticInfo).isNotNull();
Map<String, Object> testInfo = (Map<String, Object>) diagnosticInfo.get("it-collector");
assertThat(testInfo).isNotNull();
assertThat(testInfo.get("service")).isNotNull();
}
private enum TestErrorCode implements ErrorCode {
TEST_CODE
}
}