1 /* 2 * Copyright (C) 2015 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.compatibility.common.tradefed.testtype; 18 19 import com.android.tradefed.config.ConfigurationDescriptor; 20 import com.android.tradefed.device.DeviceNotAvailableException; 21 import com.android.tradefed.metrics.proto.MetricMeasurement.Metric; 22 import com.android.tradefed.result.ITestInvocationListener; 23 import com.android.tradefed.targetprep.ITargetPreparer; 24 import com.android.tradefed.testtype.Abi; 25 import com.android.tradefed.testtype.IAbi; 26 import com.android.tradefed.testtype.IAbiReceiver; 27 import com.android.tradefed.testtype.IRemoteTest; 28 import com.android.tradefed.testtype.IRuntimeHintProvider; 29 import com.android.tradefed.testtype.ITestCollector; 30 import com.android.tradefed.testtype.ITestFilterReceiver; 31 import com.android.tradefed.util.AbiUtils; 32 33 import junit.framework.TestCase; 34 35 import org.easymock.EasyMock; 36 37 import java.util.ArrayList; 38 import java.util.HashMap; 39 import java.util.List; 40 import java.util.Set; 41 42 public class ModuleDefTest extends TestCase { 43 44 private static final String NAME = "ModuleName"; 45 private static final String ABI = "mips64"; 46 private static final String ID = AbiUtils.createId(ABI, NAME); 47 48 public void testAccessors() throws Exception { 49 IAbi abi = new Abi(ABI, ""); 50 MockRemoteTest mockTest = new MockRemoteTest(); 51 IModuleDef def = new ModuleDef(NAME, abi, mockTest, new ArrayList<ITargetPreparer>(), 52 new ConfigurationDescriptor()); 53 assertEquals("Incorrect ID", ID, def.getId()); 54 assertEquals("Incorrect ABI", ABI, def.getAbi().getName()); 55 assertEquals("Incorrect Name", NAME, def.getName()); 56 } 57 58 public void testModuleFinisher() throws Exception { 59 IAbi abi = new Abi(ABI, ""); 60 MockRemoteTest mockTest = new MockRemoteTest(); 61 IModuleDef def = new ModuleDef(NAME, abi, mockTest, 62 new ArrayList<ITargetPreparer>(), new ConfigurationDescriptor()); 63 ITestInvocationListener mockListener = EasyMock.createMock(ITestInvocationListener.class); 64 // listener should receive testRunStarted/testRunEnded events even for no-op run() method 65 mockListener.testRunStarted(ID, 0); 66 EasyMock.expectLastCall().once(); 67 mockListener.testRunEnded(0, new HashMap<String, Metric>()); 68 EasyMock.expectLastCall().once(); 69 EasyMock.replay(mockListener); 70 def.run(mockListener); 71 EasyMock.verify(mockListener); 72 } 73 74 private class MockRemoteTest implements IRemoteTest, ITestFilterReceiver, IAbiReceiver, 75 IRuntimeHintProvider, ITestCollector { 76 77 private final List<String> mIncludeFilters = new ArrayList<>(); 78 private final List<String> mExcludeFilters = new ArrayList<>(); 79 80 @Override 81 public void addIncludeFilter(String filter) { 82 mIncludeFilters.add(filter); 83 } 84 85 @Override 86 public void addAllIncludeFilters(Set<String> filters) { 87 mIncludeFilters.addAll(filters); 88 } 89 90 @Override 91 public void addExcludeFilter(String filter) { 92 mExcludeFilters.add(filter); 93 } 94 95 @Override 96 public void addAllExcludeFilters(Set<String> filters) { 97 mExcludeFilters.addAll(filters); 98 } 99 100 @Override 101 public void run(ITestInvocationListener listener) throws DeviceNotAvailableException { 102 // Do nothing 103 } 104 105 @Override 106 public void setAbi(IAbi abi) { 107 // Do nothing 108 } 109 110 @Override 111 public IAbi getAbi() { 112 return null; 113 } 114 115 @Override 116 public long getRuntimeHint() { 117 return 1L; 118 } 119 120 @Override 121 public void setCollectTestsOnly(boolean shouldCollectTest) { 122 // Do nothing 123 } 124 } 125 } 126