1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.protolog.tool 18 19 import com.android.internal.protolog.common.LogLevel 20 import com.android.json.stream.JsonReader 21 import com.android.protolog.tool.ProtoLogTool.LogCall 22 import java.io.StringReader 23 import org.junit.Assert.assertEquals 24 import org.junit.Test 25 26 class ViewerConfigJsonBuilderTest { 27 companion object { 28 private val TAG1 = "WM_TEST" 29 private val TAG2 = "WM_DEBUG" 30 private val TEST1 = ViewerConfigParser.ConfigEntry("test1", LogLevel.INFO.name, TAG1) 31 private val TEST2 = ViewerConfigParser.ConfigEntry("test2", LogLevel.DEBUG.name, TAG2) 32 private val TEST3 = ViewerConfigParser.ConfigEntry("test3", LogLevel.ERROR.name, TAG2) 33 private val GROUP1 = LogGroup("TEST_GROUP", true, true, TAG1) 34 private val GROUP2 = LogGroup("DEBUG_GROUP", true, true, TAG2) 35 private val GROUP3 = LogGroup("DEBUG_GROUP", true, true, TAG2) 36 private val GROUP_DISABLED = LogGroup("DEBUG_GROUP", false, true, TAG2) 37 private val GROUP_TEXT_DISABLED = LogGroup("DEBUG_GROUP", true, false, TAG2) 38 private const val PATH = "/tmp/test.java" 39 } 40 41 private val configBuilder = ViewerConfigJsonBuilder() 42 parseConfignull43 private fun parseConfig(json: String): Map<Long, ViewerConfigParser.ConfigEntry> { 44 return ViewerConfigParser().parseConfig(JsonReader(StringReader(json))) 45 } 46 47 @Test processClassnull48 fun processClass() { 49 val logCallRegistry = ProtoLogTool.LogCallRegistry() 50 logCallRegistry.addLogCalls(listOf( 51 LogCall(TEST1.messageString, LogLevel.INFO, GROUP1, PATH), 52 LogCall(TEST2.messageString, LogLevel.DEBUG, GROUP2, PATH), 53 LogCall(TEST3.messageString, LogLevel.ERROR, GROUP3, PATH))) 54 55 val parsedConfig = parseConfig( 56 configBuilder.build(logCallRegistry.getStatements()).toString(Charsets.UTF_8)) 57 assertEquals(3, parsedConfig.size) 58 assertEquals(TEST1, parsedConfig[CodeUtils.hash(PATH, 59 TEST1.messageString, LogLevel.INFO, GROUP1)]) 60 assertEquals(TEST2, parsedConfig[CodeUtils.hash(PATH, TEST2.messageString, 61 LogLevel.DEBUG, GROUP2)]) 62 assertEquals(TEST3, parsedConfig[CodeUtils.hash(PATH, TEST3.messageString, 63 LogLevel.ERROR, GROUP3)]) 64 } 65 66 @Test processClass_nonUniquenull67 fun processClass_nonUnique() { 68 val logCallRegistry = ProtoLogTool.LogCallRegistry() 69 logCallRegistry.addLogCalls(listOf( 70 LogCall(TEST1.messageString, LogLevel.INFO, GROUP1, PATH), 71 LogCall(TEST1.messageString, LogLevel.INFO, GROUP1, PATH), 72 LogCall(TEST1.messageString, LogLevel.INFO, GROUP1, PATH))) 73 74 val parsedConfig = parseConfig( 75 configBuilder.build(logCallRegistry.getStatements()).toString(Charsets.UTF_8)) 76 assertEquals(1, parsedConfig.size) 77 assertEquals(TEST1, parsedConfig[CodeUtils.hash(PATH, TEST1.messageString, 78 LogLevel.INFO, GROUP1)]) 79 } 80 } 81