1ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius/* 2ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Copyright (C) 2015 The Android Open Source Project 3ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * 4ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Licensed under the Apache License, Version 2.0 (the "License"); 5ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * you may not use this file except in compliance with the License. 6ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * You may obtain a copy of the License at 7ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * 8ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * http://www.apache.org/licenses/LICENSE-2.0 9ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * 10ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Unless required by applicable law or agreed to in writing, software 11ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * distributed under the License is distributed on an "AS IS" BASIS, 12ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * See the License for the specific language governing permissions and 14ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * limitations under the License. 15ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius */ 16ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius 17ac9ad3283508db15b65b1cbb89b841278973276bRoshan Piuspackage com.android.server.wifi; 18ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius 19ac9ad3283508db15b65b1cbb89b841278973276bRoshan Piusimport java.lang.annotation.Annotation; 20ac9ad3283508db15b65b1cbb89b841278973276bRoshan Piusimport java.lang.reflect.Method; 21ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius 22ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius/** 23ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Generial Utilities for Wifi tests 24ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius */ 25ac9ad3283508db15b65b1cbb89b841278973276bRoshan Piuspublic class WifiTestUtil { 26ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius 27ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius /** 28ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Walk up the stack and find the first method annotated with @Test 29ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius * Note: this will evaluate all overloads with the method name for the @Test annotation 30ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius */ 31ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius public static String getTestMethod() { 32ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius StackTraceElement[] stack = Thread.currentThread().getStackTrace(); 33ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius for (StackTraceElement e : stack) { 34ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius if (e.isNativeMethod()) { 35ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius continue; 36ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 37ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius Class clazz; 38ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius try { 39ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius clazz = Class.forName(e.getClassName()); 40ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } catch (ClassNotFoundException ex) { 41ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius throw new RuntimeException("Could not find class from stack", ex); 42ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 43ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius Method[] methods = clazz.getDeclaredMethods(); 44ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius for (Method method : methods) { 45ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius if (method.getName().equals(e.getMethodName())) { 46ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius Annotation[] annotations = method.getDeclaredAnnotations(); 47ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius for (Annotation annotation : annotations) { 48ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius if (annotation.annotationType().equals(org.junit.Test.class)) { 49ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius return e.getClassName() + "#" + e.getMethodName(); 50ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 51ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 52ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 53ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 54ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 55ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius throw new RuntimeException("Could not find a test method in the stack"); 56ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius } 57ac9ad3283508db15b65b1cbb89b841278973276bRoshan Pius} 58