346 LogConfiguration::configure_stdout(LogLevel::Off, false, LOG_TAGS(gc));
347 EXPECT_FALSE(log_is_enabled(Error, gc));
348 EXPECT_FALSE(log_is_enabled(Error, gc, heap));
349 for (LogTagSet* ts = LogTagSet::first(); ts != NULL; ts = ts->next()) {
350 EXPECT_EQ(LogLevel::Off, ts->level_for(&StdoutLog));
351 }
352 }
353
354 static int Test_logconfiguration_subscribe_triggered = 0;
355 static void Test_logconfiguration_subscribe_helper() {
356 Test_logconfiguration_subscribe_triggered++;
357 }
358
359 TEST_VM_F(LogConfigurationTest, subscribe) {
360 ResourceMark rm;
361 Log(logging) log;
362 set_log_config("stdout", "logging*=trace");
363
364 LogConfiguration::register_update_listener(&Test_logconfiguration_subscribe_helper);
365
366 LogConfiguration::parse_log_arguments("stdout", "logging=trace", NULL, NULL, log.error_stream());
367 ASSERT_EQ(1, Test_logconfiguration_subscribe_triggered);
368
369 LogConfiguration::configure_stdout(LogLevel::Debug, true, LOG_TAGS(gc));
370 ASSERT_EQ(2, Test_logconfiguration_subscribe_triggered);
371
372 LogConfiguration::disable_logging();
373 ASSERT_EQ(3, Test_logconfiguration_subscribe_triggered);
374 }
375
376 TEST_VM_F(LogConfigurationTest, parse_invalid_tagset) {
377 static const char* invalid_tagset = "logging+start+exit+safepoint+gc"; // Must not exist for test to function.
378
379 // Make sure warning is produced if one or more configured tagsets are invalid
380 ResourceMark rm;
381 stringStream ss;
382 bool success = LogConfiguration::parse_log_arguments("stdout", invalid_tagset, NULL, NULL, &ss);
383 const char* msg = ss.as_string();
384 EXPECT_TRUE(success) << "Should only cause a warning, not an error";
385 EXPECT_TRUE(string_contains_substring(msg, "No tag set matches selection(s):"));
386 EXPECT_TRUE(string_contains_substring(msg, invalid_tagset));
|
346 LogConfiguration::configure_stdout(LogLevel::Off, false, LOG_TAGS(gc));
347 EXPECT_FALSE(log_is_enabled(Error, gc));
348 EXPECT_FALSE(log_is_enabled(Error, gc, heap));
349 for (LogTagSet* ts = LogTagSet::first(); ts != NULL; ts = ts->next()) {
350 EXPECT_EQ(LogLevel::Off, ts->level_for(&StdoutLog));
351 }
352 }
353
354 static int Test_logconfiguration_subscribe_triggered = 0;
355 static void Test_logconfiguration_subscribe_helper() {
356 Test_logconfiguration_subscribe_triggered++;
357 }
358
359 TEST_VM_F(LogConfigurationTest, subscribe) {
360 ResourceMark rm;
361 Log(logging) log;
362 set_log_config("stdout", "logging*=trace");
363
364 LogConfiguration::register_update_listener(&Test_logconfiguration_subscribe_helper);
365
366 LogStream ls(log.error());
367 LogConfiguration::parse_log_arguments("stdout", "logging=trace", NULL, NULL, &ls);
368 ASSERT_EQ(1, Test_logconfiguration_subscribe_triggered);
369
370 LogConfiguration::configure_stdout(LogLevel::Debug, true, LOG_TAGS(gc));
371 ASSERT_EQ(2, Test_logconfiguration_subscribe_triggered);
372
373 LogConfiguration::disable_logging();
374 ASSERT_EQ(3, Test_logconfiguration_subscribe_triggered);
375 }
376
377 TEST_VM_F(LogConfigurationTest, parse_invalid_tagset) {
378 static const char* invalid_tagset = "logging+start+exit+safepoint+gc"; // Must not exist for test to function.
379
380 // Make sure warning is produced if one or more configured tagsets are invalid
381 ResourceMark rm;
382 stringStream ss;
383 bool success = LogConfiguration::parse_log_arguments("stdout", invalid_tagset, NULL, NULL, &ss);
384 const char* msg = ss.as_string();
385 EXPECT_TRUE(success) << "Should only cause a warning, not an error";
386 EXPECT_TRUE(string_contains_substring(msg, "No tag set matches selection(s):"));
387 EXPECT_TRUE(string_contains_substring(msg, invalid_tagset));
|