1 /* 2 * Copyright (C) 2021 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 package com.android.tradefed.config.filter; 17 18 import static org.junit.Assert.assertEquals; 19 20 import com.android.tradefed.config.Configuration; 21 import com.android.tradefed.config.IConfiguration; 22 import com.android.tradefed.config.OptionSetter; 23 24 import com.proto.tradefed.feature.FeatureRequest; 25 import com.proto.tradefed.feature.FeatureResponse; 26 import com.proto.tradefed.feature.PartResponse; 27 28 import org.junit.Before; 29 import org.junit.Test; 30 import org.junit.runner.RunWith; 31 import org.junit.runners.JUnit4; 32 33 /** 34 * Unit tests for {@link CommandOptionsGetter}. 35 */ 36 @RunWith(JUnit4.class) 37 public class CommandOptionsGetterTest { 38 39 private IConfiguration mConfiguration; 40 private CommandOptionsGetter mGetter; 41 42 @Before setUp()43 public void setUp() { 44 mConfiguration = new Configuration("name", "description"); 45 mGetter = new CommandOptionsGetter(); 46 mGetter.setConfiguration(mConfiguration); 47 } 48 49 @Test getCommandOptionsValue()50 public void getCommandOptionsValue() throws Exception { 51 OptionSetter setter = new OptionSetter(mConfiguration.getCommandOptions()); 52 setter.setOptionValue("filter-previous-passed", "false"); 53 FeatureResponse response = mGetter.execute(FeatureRequest.newBuilder() 54 .setName(CommandOptionsGetter.COMMAND_OPTIONS_GETTER) 55 .putArgs(CommandOptionsGetter.OPTION_NAME, "filter-previous-passed").build()); 56 assertEquals("false", response.getResponse()); 57 } 58 59 @Test getCommandOptionsValue_updated()60 public void getCommandOptionsValue_updated() throws Exception { 61 OptionSetter setter = new OptionSetter(mConfiguration.getCommandOptions()); 62 setter.setOptionValue("filter-previous-passed", "true"); 63 FeatureResponse response = mGetter.execute(FeatureRequest.newBuilder() 64 .setName(CommandOptionsGetter.COMMAND_OPTIONS_GETTER) 65 .putArgs(CommandOptionsGetter.OPTION_NAME, "filter-previous-passed").build()); 66 67 assertEquals("true", response.getResponse()); 68 } 69 70 @Test getCommandOptionsValue_multiValue()71 public void getCommandOptionsValue_multiValue() throws Exception { 72 OptionSetter setter = new OptionSetter(mConfiguration.getCommandOptions()); 73 setter.setOptionValue("filter-previous-passed", "true"); 74 setter.setOptionValue("test-tag", "mytag"); 75 FeatureResponse response = 76 mGetter.execute( 77 FeatureRequest.newBuilder() 78 .setName(CommandOptionsGetter.COMMAND_OPTIONS_GETTER) 79 .putArgs( 80 CommandOptionsGetter.OPTION_NAME, 81 "filter-previous-passed,test-tag,auto-collect") 82 .build()); 83 assertEquals(2, response.getMultiPartResponse().getResponsePartList().size()); 84 85 PartResponse part1 = response.getMultiPartResponse().getResponsePart(0); 86 assertEquals("filter-previous-passed", part1.getKey()); 87 assertEquals("true", part1.getValue()); 88 89 PartResponse part2 = response.getMultiPartResponse().getResponsePart(1); 90 assertEquals("test-tag", part2.getKey()); 91 assertEquals("mytag", part2.getValue()); 92 } 93 94 @Test getCommandOptionsValue_set()95 public void getCommandOptionsValue_set() throws Exception { 96 OptionSetter setter = new OptionSetter(mConfiguration.getCommandOptions()); 97 setter.setOptionValue("filter-previous-passed", "true"); 98 setter.setOptionValue("test-tag", "mytag"); 99 setter.setOptionValue("auto-collect", "DEVICE_TRACE"); 100 setter.setOptionValue("auto-collect", "LOGCAT_ON_FAILURE"); 101 FeatureResponse response = 102 mGetter.execute( 103 FeatureRequest.newBuilder() 104 .setName(CommandOptionsGetter.COMMAND_OPTIONS_GETTER) 105 .putArgs( 106 CommandOptionsGetter.OPTION_NAME, 107 "filter-previous-passed,test-tag,auto-collect") 108 .build()); 109 assertEquals(4, response.getMultiPartResponse().getResponsePartList().size()); 110 111 PartResponse part1 = response.getMultiPartResponse().getResponsePart(0); 112 assertEquals("filter-previous-passed", part1.getKey()); 113 assertEquals("true", part1.getValue()); 114 115 PartResponse part2 = response.getMultiPartResponse().getResponsePart(1); 116 assertEquals("test-tag", part2.getKey()); 117 assertEquals("mytag", part2.getValue()); 118 119 PartResponse part3 = response.getMultiPartResponse().getResponsePart(2); 120 assertEquals("auto-collect", part3.getKey()); 121 assertEquals("DEVICE_TRACE", part3.getValue()); 122 123 PartResponse part4 = response.getMultiPartResponse().getResponsePart(3); 124 assertEquals("auto-collect", part4.getKey()); 125 assertEquals("LOGCAT_ON_FAILURE", part4.getValue()); 126 } 127 } 128