View Javadoc
1   /*-
2    * #%L
3    * io.earcam.instrumental.agent.junit
4    * %%
5    * Copyright (C) 2018 earcam
6    * %%
7    * SPDX-License-Identifier: (BSD-3-Clause OR EPL-1.0 OR Apache-2.0 OR MIT)
8    * 
9    * You <b>must</b> choose to accept, in full - any individual or combination of 
10   * the following licenses:
11   * <ul>
12   * 	<li><a href="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</a></li>
13   * 	<li><a href="https://www.eclipse.org/legal/epl-v10.html">EPL-1.0</a></li>
14   * 	<li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache-2.0</a></li>
15   * 	<li><a href="https://opensource.org/licenses/MIT">MIT</a></li>
16   * </ul>
17   * #L%
18   */
19  package com.acme;
20  
21  import java.lang.instrument.Instrumentation;
22  import java.util.ArrayList;
23  import java.util.List;
24  
25  public final class StubAgentState {
26  
27  	static volatile Instrumentation instrumentation;
28  	static final List<String> arguments = new ArrayList<>();
29  	static volatile int preMainInvocations;
30  	static volatile int agentMainInvocations;
31  
32  
33  	private StubAgentState()
34  	{}
35  
36  
37  	public static void initialize()
38  	{
39  		agentMainInvocations = preMainInvocations = 0;
40  		instrumentation = null;
41  		arguments.clear();
42  	}
43  
44  
45  	public static Instrumentation instrumentation()
46  	{
47  		return instrumentation;
48  	}
49  
50  
51  	public static List<String> arguments()
52  	{
53  		return arguments;
54  	}
55  
56  
57  	public static boolean isPreMainInvoked()
58  	{
59  		return preMainInvocations > 0;
60  	}
61  
62  
63  	public static boolean isAgentMainInvoked()
64  	{
65  		return agentMainInvocations > 0;
66  	}
67  
68  
69  	public static int preMainInvocations()
70  	{
71  		return preMainInvocations;
72  	}
73  
74  
75  	public static int agentMainInvocations()
76  	{
77  		return agentMainInvocations;
78  	}
79  }