@Override public void run() { result.set(assertHasEvent(filter)); }}); return result.get();
@Test(groups="Integration") public void testLogsStdoutAndStderr() { List<String> loggerNames = ImmutableList.of( SshMachineLocation.class.getName(), BrooklynLogging.SSH_IO, SshjTool.class.getName()); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.DEBUG; Predicate<ILoggingEvent> filter = Predicates.alwaysTrue(); LogWatcher watcher = new LogWatcher(loggerNames, logLevel, filter); watcher.start(); try { host.execCommands("mySummary", ImmutableList.of("echo mystdout1", "echo mystdout2", "echo mystderr1 1>&2", "echo mystderr2 1>&2")); watcher.assertHasEvent(EventPredicates.containsMessage(":22:stdout] mystdout1")); watcher.assertHasEvent(EventPredicates.containsMessage(":22:stdout] mystdout2")); watcher.assertHasEvent(EventPredicates.containsMessage(":22:stderr] mystderr1")); watcher.assertHasEvent(EventPredicates.containsMessage(":22:stderr] mystderr2")); } finally { watcher.close(); } }
@Test public void testLogsStdoutAndStderr() { RecordingSshTool.setCustomResponse(".*mycommand.*", new CustomResponse(0, "mystdout1\nmystdout2", "mystderr1\nmystderr2")); List<String> loggerNames = ImmutableList.of( SshMachineLocation.class.getName(), BrooklynLogging.SSH_IO, SshjTool.class.getName()); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.DEBUG; Predicate<ILoggingEvent> filter = Predicates.alwaysTrue(); LogWatcher watcher = new LogWatcher(loggerNames, logLevel, filter); watcher.start(); try { host.execCommands("mySummary", ImmutableList.of("mycommand")); watcher.assertHasEvent(EventPredicates.containsMessage("[1.2.3.4:22:stdout] mystdout1")); watcher.assertHasEvent(EventPredicates.containsMessage("[1.2.3.4:22:stdout] mystdout2")); watcher.assertHasEvent(EventPredicates.containsMessage("[1.2.3.4:22:stderr] mystderr1")); watcher.assertHasEvent(EventPredicates.containsMessage("[1.2.3.4:22:stderr] mystderr2")); } finally { watcher.close(); } }
@Test public void testLogsWarningIfMultipleDeprecatedNamesUsed() throws Exception { String loggerName = ConfigUtilsInternal.class.getName(); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.WARN; Predicate<ILoggingEvent> filter = EventPredicates.containsMessages( "Using deprecated config value on MyBaseEntity", "should use 'superKey1', but used 'oldSuperKey1b' and ignored values present for other deprecated name(s) [oldSuperKey1b]"); LogWatcher watcher = new LogWatcher(loggerName, logLevel, filter); watcher.start(); try { testPrefersFirstDeprecatedNameIfMultiple(); watcher.assertHasEvent(); } finally { watcher.close(); } }
@Test public void testLogsWarningIfNonDeprecatedAndDeprecatedNamesUsed() throws Exception { String loggerName = ConfigUtilsInternal.class.getName(); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.WARN; Predicate<ILoggingEvent> filter = EventPredicates.containsMessages( "Ignoring deprecated config value(s) on MyBaseEntity", "because contains value for 'superKey1', other deprecated name(s) present were: [oldSuperKey1]"); LogWatcher watcher = new LogWatcher(loggerName, logLevel, filter); watcher.start(); try { testPrefersNonDeprecatedName(); watcher.assertHasEvent(); } finally { watcher.close(); } }
@Test public void testLogsIfDeprecatedNameUsed() throws Exception { // FIXME Which logger? String loggerName = ConfigUtilsInternal.class.getName(); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.WARN; Predicate<ILoggingEvent> filter = EventPredicates.containsMessages( "Using deprecated config value on MyBaseEntity", "should use 'superKey1', but used 'oldSuperKey1'"); LogWatcher watcher = new LogWatcher(loggerName, logLevel, filter); watcher.start(); try { testUsingDeprecatedName(); watcher.assertHasEvent(); } finally { watcher.close(); } }
@Test public void testTask() throws Exception { final TestApplication app = TestApplication.Factory.newManagedInstanceForTests(); mgmt = app.getManagementContext(); Task<String> completedTask = app.getExecutionContext().submit(Callables.returning("myval")); completedTask.get(); String loggerName = UnwantedStateLoggingMapper.class.getName(); ch.qos.logback.classic.Level logLevel = ch.qos.logback.classic.Level.WARN; Predicate<ILoggingEvent> filter = EventPredicates.containsMessage("Task object serialization is not supported or recommended"); LogWatcher watcher = new LogWatcher(loggerName, logLevel, filter); String serializedForm; watcher.start(); try { serializedForm = serializer.toString(completedTask); watcher.assertHasEvent(); } finally { watcher.close(); } assertEquals(serializedForm.trim(), "<"+BasicTask.class.getName()+">myval</"+BasicTask.class.getName()+">"); Object deserialized = serializer.fromString(serializedForm); assertEquals(deserialized, null, "serializedForm="+serializedForm+"; deserialized="+deserialized); }