jdk/test/java/lang/System/LoggerFinder/internal/BaseDefaultLoggerFinderTest/BaseDefaultLoggerFinderTest.java
changeset 37672 03684934dc09
parent 34723 734a1c90ce86
child 44545 83b611b88ac8
equal deleted inserted replaced
37671:7917477e22a8 37672:03684934dc09
    53 import java.util.concurrent.atomic.AtomicReference;
    53 import java.util.concurrent.atomic.AtomicReference;
    54 import java.util.function.Function;
    54 import java.util.function.Function;
    55 import jdk.internal.logger.DefaultLoggerFinder;
    55 import jdk.internal.logger.DefaultLoggerFinder;
    56 import jdk.internal.logger.SimpleConsoleLogger;
    56 import jdk.internal.logger.SimpleConsoleLogger;
    57 import sun.util.logging.PlatformLogger;
    57 import sun.util.logging.PlatformLogger;
       
    58 import java.lang.reflect.Module;
    58 
    59 
    59 /**
    60 /**
    60  * @test
    61  * @test
    61  * @bug     8140364 8145686
    62  * @bug     8140364 8145686
    62  * @summary JDK implementation specific unit test for the base DefaultLoggerFinder.
    63  * @summary JDK implementation specific unit test for the base DefaultLoggerFinder.
   110         public final static AtomicBoolean fails = new AtomicBoolean();
   111         public final static AtomicBoolean fails = new AtomicBoolean();
   111         public final static AtomicReference<String> conf = new AtomicReference<>("");
   112         public final static AtomicReference<String> conf = new AtomicReference<>("");
   112         public final static AtomicLong sequencer = new AtomicLong();
   113         public final static AtomicLong sequencer = new AtomicLong();
   113 
   114 
   114 
   115 
   115         public Logger getLogger(String name, Class<?> caller);
   116         public Logger getLogger(String name, Module caller);
   116         public Logger getLocalizedLogger(String name, ResourceBundle bundle, Class<?> caller);
   117         public Logger getLocalizedLogger(String name, ResourceBundle bundle, Module caller);
   117         void setLevel(Logger logger, Level level, Class<?> caller);
   118         void setLevel(Logger logger, Level level, Module caller);
   118         void setLevel(Logger logger, PlatformLogger.Level level, Class<?> caller);
   119         void setLevel(Logger logger, PlatformLogger.Level level, Module caller);
   119         PlatformLogger.Bridge asPlatformLoggerBridge(Logger logger);
   120         PlatformLogger.Bridge asPlatformLoggerBridge(Logger logger);
   120     }
   121     }
   121 
   122 
   122     public static class BaseLoggerFinder extends DefaultLoggerFinder implements TestLoggerFinder {
   123     public static class BaseLoggerFinder extends DefaultLoggerFinder implements TestLoggerFinder {
   123 
   124 
   128                 throw new RuntimeException("Simulate exception while loading provider");
   129                 throw new RuntimeException("Simulate exception while loading provider");
   129             }
   130             }
   130         }
   131         }
   131 
   132 
   132         @Override
   133         @Override
   133         public void setLevel(Logger logger, Level level, Class<?> caller) {
   134         public void setLevel(Logger logger, Level level, Module caller) {
   134             PrivilegedAction<Void> pa = () -> {
   135             PrivilegedAction<Void> pa = () -> {
   135                 setLevel(logger, PlatformLogger.toPlatformLevel(level), caller);
   136                 setLevel(logger, PlatformLogger.toPlatformLevel(level), caller);
   136                 return null;
   137                 return null;
   137             };
   138             };
   138             AccessController.doPrivileged(pa);
   139             AccessController.doPrivileged(pa);
   139         }
   140         }
   140 
   141 
   141         @Override
   142         @Override
   142         public void setLevel(Logger logger, PlatformLogger.Level level, Class<?> caller) {
   143         public void setLevel(Logger logger, PlatformLogger.Level level, Module caller) {
   143             PrivilegedAction<Logger> pa = () -> demandLoggerFor(logger.getName(), caller);
   144             PrivilegedAction<Logger> pa = () -> demandLoggerFor(logger.getName(), caller);
   144             Logger impl = AccessController.doPrivileged(pa);
   145             Logger impl = AccessController.doPrivileged(pa);
   145             SimpleConsoleLogger.class.cast(impl)
   146             SimpleConsoleLogger.class.cast(impl)
   146                     .getLoggerConfiguration()
   147                     .getLoggerConfiguration()
   147                     .setPlatformLevel(level);
   148                     .setPlatformLevel(level);
   604     private static void testLogger(TestLoggerFinder provider,
   605     private static void testLogger(TestLoggerFinder provider,
   605             Map<Logger, String> loggerDescMap,
   606             Map<Logger, String> loggerDescMap,
   606             String name,
   607             String name,
   607             ResourceBundle loggerBundle,
   608             ResourceBundle loggerBundle,
   608             Logger logger,
   609             Logger logger,
   609             Class<?> caller) {
   610             Class<?> callerClass) {
   610 
   611 
   611         System.out.println("Testing " + loggerDescMap.get(logger) + " [" + logger +"]");
   612         System.out.println("Testing " + loggerDescMap.get(logger) + " [" + logger +"]");
   612         AtomicLong sequencer = TestLoggerFinder.sequencer;
   613         AtomicLong sequencer = TestLoggerFinder.sequencer;
   613 
   614 
       
   615         Module caller = callerClass.getModule();
   614         Foo foo = new Foo();
   616         Foo foo = new Foo();
   615         String fooMsg = foo.toString();
   617         String fooMsg = foo.toString();
   616         for (Level loggerLevel : Level.values()) {
   618         for (Level loggerLevel : Level.values()) {
   617             provider.setLevel(logger, loggerLevel, caller);
   619             provider.setLevel(logger, loggerLevel, caller);
   618             for (Level messageLevel : Level.values()) {
   620             for (Level messageLevel : Level.values()) {