1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the License 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 * or implied. See the License for the specific language governing permissions and limitations under 12 * the License. 13 */ 14 15 package art; 16 17 import java.util.concurrent.CountDownLatch; 18 import java.util.concurrent.TimeUnit; 19 20 /** 21 * An entrypoint for the CTS JVMTI agent to signal to the Java side that it has attached. 22 */ 23 public class CtsMain { 24 25 private static CountDownLatch sStartWaiter = new CountDownLatch(1); 26 27 /** 28 * This method will be called by the agent to inform the test that JNI methods are bound. The 29 * counterpart is waitFor. 30 */ 31 @SuppressWarnings("unused") startup()32 private static void startup() { 33 sStartWaiter.countDown(); 34 } 35 waitFor()36 public static void waitFor() { 37 try { 38 if (!sStartWaiter.await(15, TimeUnit.SECONDS)) { 39 throw new RuntimeException("Timed out waiting for the agent"); 40 } 41 } catch (InterruptedException e) { 42 throw new RuntimeException("Got interrupted waiting for agent."); 43 } 44 } 45 } 46