11a5a3217595b183deee7a31b25e77eeed707e381Kenny Root/*
21a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Copyright (C) 2007 The Android Open Source Project
31a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
41a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Licensed under the Apache License, Version 2.0 (the "License");
51a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * you may not use this file except in compliance with the License.
61a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * You may obtain a copy of the License at
71a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
81a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *      http://www.apache.org/licenses/LICENSE-2.0
91a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
101a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Unless required by applicable law or agreed to in writing, software
111a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * distributed under the License is distributed on an "AS IS" BASIS,
121a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * See the License for the specific language governing permissions and
141a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * limitations under the License.
151a5a3217595b183deee7a31b25e77eeed707e381Kenny Root */
161a5a3217595b183deee7a31b25e77eeed707e381Kenny Root
171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.util;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.Assert;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemProperties;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.PerformanceTestCase;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.Suppress;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//This is an empty TestCase.
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@Suppress
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class LogTest extends TestCase {
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final String PROPERTY_TAG = "log.tag.LogTest";
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final String LOG_TAG = "LogTest";
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // TODO: remove this test once we uncomment out the following test.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLogTestDummy() {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      return;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* TODO: This test is commented out because we will not be able to set properities. Fix the test.
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testIsLoggable() {
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // First clear any SystemProperty setting for our test key.
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, null);
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String value = SystemProperties.get(PROPERTY_TAG);
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(value == null || value.length() == 0);
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Check to make sure that all levels expect for INFO, WARN, ERROR, and ASSERT are loggable.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.INFO));
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.WARN));
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be VERBOSE for this tag.
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "VERBOSE");
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= VERBOSE are loggable.
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.VERBOSE));
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.DEBUG));
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.INFO));
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.WARN));
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be DEBUG for this tag.
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "DEBUG");
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= DEBUG are loggable.
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.DEBUG));
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.INFO));
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.WARN));
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be INFO for this tag.
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "INFO");
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= INFO are loggable.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.INFO));
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.WARN));
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be WARN for this tag.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "WARN");
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= WARN are loggable.
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.INFO));
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.WARN));
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be ERROR for this tag.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "ERROR");
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= ERROR are loggable.
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.INFO));
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.WARN));
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ERROR));
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be ASSERT for this tag.
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "ASSERT");
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= ASSERT are loggable.
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.INFO));
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.WARN));
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.ERROR));
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertTrue(Log.isLoggable(LOG_TAG, Log.ASSERT));
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Set the log level to be SUPPRESS for this tag.
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SystemProperties.set(PROPERTY_TAG, "SUPPRESS");
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Test to make sure all log levels >= ASSERT are loggable.
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.VERBOSE));
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.DEBUG));
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.INFO));
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.WARN));
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.ERROR));
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.ASSERT));
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    */
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class PerformanceTest extends TestCase implements PerformanceTestCase {
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private static final int ITERATIONS = 1000;
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @Override
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void setUp() {
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            SystemProperties.set(LOG_TAG, "VERBOSE");
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public boolean isPerformanceOnly() {
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            intermediates.setInternalIterations(ITERATIONS * 10);
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return 0;
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testIsLoggable() {
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean canLog = false;
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            for (int i = ITERATIONS - 1; i >= 0; i--) {
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                canLog = Log.isLoggable(LOG_TAG, Log.VERBOSE);
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
169