1f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme/** 2f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * Copyright (c) 2016, The Android Open Source Project 3f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * 4f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * Licensed under the Apache License, Version 2.0 (the "License"); 5f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * you may not use this file except in compliance with the License. 6f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * You may obtain a copy of the License at 7f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * 8f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * http://www.apache.org/licenses/LICENSE-2.0 9f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * 10f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * Unless required by applicable law or agreed to in writing, software 11f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * distributed under the License is distributed on an "AS IS" BASIS, 12f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * See the License for the specific language governing permissions and 14f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme * limitations under the License. 15f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme */ 16f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 17f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemepackage com.android.server.utils; 18f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 19f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport static com.android.server.utils.PriorityDump.dump; 20f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 21f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport static org.junit.Assert.assertSame; 22e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nairimport static org.junit.Assert.assertArrayEquals; 23f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport static org.mockito.Matchers.eq; 24f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport static org.mockito.Matchers.same; 25f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport static org.mockito.Mockito.verify; 26f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 27f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport android.platform.test.annotations.Presubmit; 28f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport android.support.test.filters.SmallTest; 29f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport com.android.server.utils.PriorityDump.PriorityDumper; 30f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 31f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.junit.Before; 32f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.junit.Test; 33f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.junit.runner.RunWith; 34f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.junit.runners.JUnit4; 35f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.mockito.Mock; 36f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport org.mockito.MockitoAnnotations; 37f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 38f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport java.io.FileDescriptor; 39f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemeimport java.io.PrintWriter; 40f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 41f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme@SmallTest 42f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme@Presubmit 43f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme@RunWith(JUnit4.class) 44f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Lemepublic class PriorityDumpTest { 45f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 46f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme private static final String[] EMPTY_ARGS = {}; 47f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 48f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Mock 49f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme private PriorityDumper mDumper; 50f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Mock 51f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme private PrintWriter mPw; 52f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 53f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme private final FileDescriptor mFd = FileDescriptor.err; 54f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 55f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Before 56f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void setup() { 57f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme MockitoAnnotations.initMocks(this); 58f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 59f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 60f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 61f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNullArgs() { 62f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, null); 63e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(null), /* asProto= */ eq(false)); 64f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 65f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 66f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 67f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNoArgs() { 68f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, EMPTY_ARGS); 69e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(false)); 70f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 71f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 72f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 73f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNonPriorityArgs() { 74f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final String[] args = { 75f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme "--dumb_priority" 76f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }; 77f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, args); 78e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(args), /* asProto= */ eq(false)); 79f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 80f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 81f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 82f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testMissingPriority() { 83f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final String[] args = { 84f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority" 85f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }; 86f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, args); 87e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(false)); 88f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 89f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 90f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 91f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testInvalidPriorityNoExtraArgs() { 92f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final String[] args = { 93f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "SUPER_HIGH" 94f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }; 95f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, args); 96e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(false)); 97f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 98f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 99f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 100f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testInvalidPriorityExtraArgs() { 101f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final String[] args = { 102f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "SUPER_HIGH", "--high", "--five" 103f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }; 104f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, args); 105e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(new String[] { 106e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair "--high", "--five" 107e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 108f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 109f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 110f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 111f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNoPriorityCallsAllMethods() { 112f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final String[] args = { 113f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme "1", "2", "3" 114f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }; 115f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 116f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme // Cannot use mDumper here because it would mock the dump() call. 117f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme final FakeDumper fakeDumper = new FakeDumper(); 118f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 119f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(fakeDumper, mFd, mPw, args); 120f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 121f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mFd, fakeDumper.criticalFd); 122f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mPw, fakeDumper.criticalPw); 123e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair assertArrayEquals(args, fakeDumper.criticalArgs); 124f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mFd, fakeDumper.highFd); 125f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mPw, fakeDumper.highPw); 126e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair assertArrayEquals(args, fakeDumper.highArgs); 127f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mFd, fakeDumper.normalFd); 128f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme assertSame(mPw, fakeDumper.normalPw); 129e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair assertArrayEquals(args, fakeDumper.normalArgs); 130f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 131f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 132f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 133f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testCriticalNoExtraArgs() { 134f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, new String[] { 135f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "CRITICAL" 136f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 137e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(EMPTY_ARGS), 138e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair /* asProto= */ eq(false)); 139f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 140f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 141f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 142f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testCriticalExtraArgs() { 143f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, new String[] { 144f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "CRITICAL", "--high", "--five" 145f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 146f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(new String[] { 147f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme "--high", "--five" 148e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 149e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 150e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 151e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 152e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testCriticalExtraArgsInMiddle() { 153e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[] { 154e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair "--high", "--dump-priority", "CRITICAL", "--five" 155e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }); 156e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(new String[] { 157e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair "--high", "--five" 158e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 159e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 160e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 161e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 162e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testCriticalExtraArgsAtEnd() { 163e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[] { 164e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair "--high", "--five", "--dump-priority", "CRITICAL" 165e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }); 166e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(new String[] { 167e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair "--high", "--five" 168e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 169f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 170f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 171f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 172f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testHighNoExtraArgs() { 173f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, new String[] { 174f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "HIGH" 175f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 176e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(false)); 177f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 178f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 179f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 180f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testHighExtraArgs() { 181f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, new String[] { 182f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "HIGH", "--high", "--five" 183f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 184f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(new String[] { 185f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme "--high", "--five" 186e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 187f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 188f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 189f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 190f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNormalNoExtraArgs() { 191f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme dump(mDumper, mFd, mPw, new String[] { 192f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "NORMAL" 193f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 194e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(false)); 195f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 196f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 197f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Test 198f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme public void testNormalExtraArgs() { 199e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{ 200f3648e04f431b39524b469c75fa2c77a3e771faeVishnu Nair "--dump-priority", "NORMAL", "--high", "--five" 201f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme }); 202e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(new String[]{ 203f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme "--high", "--five" 204e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair }), /* asProto= */ eq(false)); 205e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 206e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 207e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 208e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgs() { 209e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"--proto"}); 210e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), eq(EMPTY_ARGS), /* asProto= */ eq(true)); 211e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 212e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 213e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 214e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgsWithPriorityArgs() { 215e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"--proto", "--dump-priority", "NORMAL", "--five"}); 216e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpNormal(same(mFd), same(mPw), 217e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair eq(new String[]{"--five"}), /* asProto= */ eq(true)); 218e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 219e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 220e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 221e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgsWithPriorityArgsReverseOrder() { 222e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"--dump-priority", "NORMAL", "--proto", "--five"}); 223e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dumpNormal(same(mFd), same(mPw), 224e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair eq(new String[]{"--five"}), /* asProto= */ eq(true)); 225e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 226e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 227e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 228e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgsInMiddle() { 229e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"--unknown", "--proto", "--five"}); 230e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), 231e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair eq(new String[]{"--unknown", "--five"}), /* asProto= */ eq(true)); 232e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 233e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 234e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 235e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgsAtEnd() { 236e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"args", "-left", "--behind", "--proto"}); 237e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), 238e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair eq(new String[]{"args", "-left", "--behind"}), /* asProto= */ eq(true)); 239e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair } 240e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair 241e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair @Test 242e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void testProtoArgsWithInvalidPriorityType() { 243e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair dump(mDumper, mFd, mPw, new String[]{"--dump-priority", "HIGH?", "--proto"}); 244e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair verify(mDumper).dump(same(mFd), same(mPw), 245e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair eq(EMPTY_ARGS), /* asProto= */ eq(true)); 246f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 247f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 248f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme private final class FakeDumper implements PriorityDumper { 249f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 250f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme String[] criticalArgs, highArgs, normalArgs; 251f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme FileDescriptor criticalFd, highFd, normalFd; 252f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme PrintWriter criticalPw, highPw, normalPw; 253f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 254f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Override 255e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args, 256e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair boolean asProto) { 257f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme criticalFd = fd; 258f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme criticalPw = pw; 259f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme criticalArgs = args; 260f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 261f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 262f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Override 263e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void dumpHigh(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) { 264f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme highFd = fd; 265f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme highPw = pw; 266f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme highArgs = args; 267f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 268f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme 269f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme @Override 270e78b01ad2d7779ad3a6acfe5acd0068e4840665cVishnu Nair public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) { 271f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme normalFd = fd; 272f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme normalPw = pw; 273f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme normalArgs = args; 274f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 275f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme } 276f4006d9b0be123b2a4e874b89eb4a431d3d49c8bFelipe Leme} 277