1e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/*******************************************************************************
2398ee59bebad6835dab57b60157eff16d511709eMarc R. Hoffmann * Copyright (c) 2009, 2015 Mountainminds GmbH & Co. KG and Contributors
3e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * All rights reserved. This program and the accompanying materials
4e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0
5e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * which accompanies this distribution, and is available at
6e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html
7e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *
8e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Contributors:
9e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *    Marc R. Hoffmann - initial API and implementation
10e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *
11e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov *******************************************************************************/
12e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpackage org.jacoco.core.runtime;
13e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
14e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertEquals;
15e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertFalse;
16e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertNull;
17e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport static org.junit.Assert.assertTrue;
18e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
19e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport java.io.File;
2025fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmannimport java.util.Properties;
21e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
22e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.BeforeClass;
23e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovimport org.junit.Test;
24e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
25e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov/**
26e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov * Unit tests for {@link AgentOptions}.
27e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov */
28e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikovpublic class AgentOptionsTest {
29e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
30e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	private static File defaultAgentJarFile;
31e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
32e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@BeforeClass
33e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public static void beforeClass() {
34e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		defaultAgentJarFile = new File("jacocoagent.jar");
35e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
36e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
37e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
38e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testDefaults() {
39e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
40d5946166388e92f67220bbece1f104e21ab7b0cbMarc R. Hoffmann		assertEquals(AgentOptions.DEFAULT_DESTFILE, options.getDestfile());
41e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertTrue(options.getAppend());
42e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("*", options.getIncludes());
43e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("", options.getExcludes());
44e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("sun.reflect.DelegatingClassLoader",
45e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				options.getExclClassloader());
461d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertFalse(options.getInclBootstrapClasses());
47e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertNull(options.getSessionId());
48e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertTrue(options.getDumpOnExit());
49e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(AgentOptions.OutputMode.file, options.getOutput());
50d5946166388e92f67220bbece1f104e21ab7b0cbMarc R. Hoffmann		assertEquals(AgentOptions.DEFAULT_ADDRESS, options.getAddress());
51d5946166388e92f67220bbece1f104e21ab7b0cbMarc R. Hoffmann		assertEquals(AgentOptions.DEFAULT_PORT, options.getPort());
52e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertNull(options.getClassDumpDir());
53e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		assertFalse(options.getJmx());
5425fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann
5525fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("", options.toString());
56e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
57e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
58e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
59e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testEmptyOptions() {
60e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("");
61e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("", options.toString());
62e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
63e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
64e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
65e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testNullOptions() {
6625fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		AgentOptions options = new AgentOptions((String) null);
67e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("", options.toString());
68e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
69e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
70e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
7125fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann	public void testPropertiesOptions() {
7225fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		Properties properties = new Properties();
7347990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("destfile", "/target/test/test.exec");
7447990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("append", "false");
7547990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("includes", "org.*:com.*");
7647990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("excludes", "*Test");
7747990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("exclclassloader", "org.jacoco.test.TestLoader");
781d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		properties.put("inclbootstrapclasses", "true");
7947990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("sessionid", "testsession");
8047990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("dumponexit", "false");
8147990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("output", "tcpserver");
8247990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("address", "remotehost");
8347990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("port", "1234");
8447990a4a02bb738eedd7dce6a2f2dd10d5f28cc4Marc R. Hoffmann		properties.put("classdumpdir", "target/dump");
85e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		properties.put("jmx", "true");
8625fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann
8725fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		AgentOptions options = new AgentOptions(properties);
8825fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann
8925fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("/target/test/test.exec", options.getDestfile());
9025fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertFalse(options.getAppend());
9125fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("org.*:com.*", options.getIncludes());
9225fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("*Test", options.getExcludes());
9325fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("org.jacoco.test.TestLoader", options.getExclClassloader());
941d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertTrue(options.getInclBootstrapClasses());
9525fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("testsession", options.getSessionId());
9625fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertFalse(options.getDumpOnExit());
9725fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals(AgentOptions.OutputMode.tcpserver, options.getOutput());
9825fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("remotehost", options.getAddress());
9925fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals(1234, options.getPort());
10025fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("target/dump", options.getClassDumpDir());
101e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		assertTrue(options.getJmx());
10225fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann	}
10325fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann
10425fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann	@Test
105e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetDestile() {
106e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("destfile=/var/test.exec");
107e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("/var/test.exec", options.getDestfile());
108e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
109e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
110e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
111e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetDestile() {
112e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
113e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setDestfile("/var/test.exec");
114e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("/var/test.exec", options.getDestfile());
115e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("destfile=/var/test.exec", options.toString());
116e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
117e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
118e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
119e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetAppendTrue() {
120e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("append=true");
121e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertTrue(options.getAppend());
122e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
123e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
124e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
125e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetAppendFalse() {
126e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("append=false");
127e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertFalse(options.getAppend());
128e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
129e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
130e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
131e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetAppendTrue() {
132e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
133e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAppend(true);
134e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertTrue(options.getAppend());
135e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("append=true", options.toString());
136e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
137e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
138e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
139e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetAppendFalse() {
140e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
141e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAppend(false);
142e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertFalse(options.getAppend());
143e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("append=false", options.toString());
144e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
145e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
146e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
147e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetExclClassloader() {
148e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions(
149e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				"exclclassloader=org.jacoco.test.TestLoader");
150e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("org.jacoco.test.TestLoader", options.getExclClassloader());
151e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
152e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
153e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
154e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetExclClassloader() {
155e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
156e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setExclClassloader("org.jacoco.test.TestLoader");
157e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("org.jacoco.test.TestLoader", options.getExclClassloader());
158e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("exclclassloader=org.jacoco.test.TestLoader",
159e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				options.toString());
160e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
161e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
162e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
163e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetIncludes() {
16425fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		AgentOptions options = new AgentOptions("includes=org.*:com.*");
16525fb3d4e2bac150627f091d310bafb6be465f37bMarc R. Hoffmann		assertEquals("org.*:com.*", options.getIncludes());
166e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
167e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
168e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
169e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetIncludes() {
170e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
171e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setIncludes("org.jacoco.*");
172e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("org.jacoco.*", options.getIncludes());
173e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("includes=org.jacoco.*", options.toString());
174e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
175e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
176e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
177e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetExcludes() {
178e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("excludes=*Test");
179e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("*Test", options.getExcludes());
180e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
181e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
182e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
183e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetExcludes() {
184e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
185e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setExcludes("org.jacoco.test.*");
186e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("org.jacoco.test.*", options.getExcludes());
187e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("excludes=org.jacoco.test.*", options.toString());
188e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
189e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
190e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
191310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	public void testGetIncludeBootstrapClassesTrue() {
1921d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		AgentOptions options = new AgentOptions("inclbootstrapclasses=true");
1931d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertTrue(options.getInclBootstrapClasses());
194310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	}
195310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann
196310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	@Test
197310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	public void testGetIncludeBootstrapClassesFalse() {
1981d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		AgentOptions options = new AgentOptions("inclbootstrapclasses=false");
1991d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertFalse(options.getInclBootstrapClasses());
200310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	}
201310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann
202310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	@Test
203310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	public void testSetIncludeBootstrapClassesTrue() {
204310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann		AgentOptions options = new AgentOptions();
2051d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		options.setInclBootstrapClasses(true);
2061d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertTrue(options.getInclBootstrapClasses());
2071d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertEquals("inclbootstrapclasses=true", options.toString());
208310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	}
209310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann
210310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	@Test
211310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	public void testSetIncludeBootstrapClassesFalse() {
212310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann		AgentOptions options = new AgentOptions();
2131d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		options.setInclBootstrapClasses(false);
2141d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertFalse(options.getInclBootstrapClasses());
2151d8389bf86f8a49d31bb5182b3ec1592e2f7289aMarc R. Hoffmann		assertEquals("inclbootstrapclasses=false", options.toString());
216310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	}
217310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann
218310b7d14546c8f5e49f5e99475fb6001331ac4caMarc R. Hoffmann	@Test
219e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetSessionId() {
220e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("sessionid=testsession");
221e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("testsession", options.getSessionId());
222e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
223e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
224e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
225e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetSessionId() {
226e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
227e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setSessionId("testsession");
228e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("testsession", options.getSessionId());
229e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("sessionid=testsession", options.toString());
230e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
231e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
232e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
233e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetDumpOnExit() {
234e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("dumponexit=false");
235e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertFalse(options.getDumpOnExit());
236e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
237e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
238e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
239e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetDumpOnExit() {
240e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
241e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setDumpOnExit(false);
242e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertFalse(options.getDumpOnExit());
243e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
244e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
245e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
246e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetOutput() {
247e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("output=tcpserver");
248e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(AgentOptions.OutputMode.tcpserver, options.getOutput());
249e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
250e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
251e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
252e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetOutput1() {
253e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
254e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setOutput("tcpclient");
255e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(AgentOptions.OutputMode.tcpclient, options.getOutput());
256e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
257e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
258e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
259e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetOutput2() {
260e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
261e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setOutput(AgentOptions.OutputMode.tcpclient);
262e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(AgentOptions.OutputMode.tcpclient, options.getOutput());
263e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
264e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
265e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
266e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidOutput1() {
267e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		new AgentOptions("output=foo");
268e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
269e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
270e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
271e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidOutput2() {
272e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
273e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setOutput("foo");
274e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
275e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
276e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
277e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetPort() {
278e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("port=1234");
279e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(1234, options.getPort());
280e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
281e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
282e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
283e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetPort() {
284e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
285e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setPort(1234);
286e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(1234, options.getPort());
287e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
288e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
289e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
290e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testParseInvalidPort() {
291e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		new AgentOptions("port=xxx");
292e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
293e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
294e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
295e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetNegativePort() {
296e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
297e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setPort(-1234);
298e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
299e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
300e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
301e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetAddress() {
302e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("address=remotehost");
303e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("remotehost", options.getAddress());
304e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
305e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
306e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
307e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetAddress() {
308e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
309e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAddress("remotehost");
310e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("remotehost", options.getAddress());
311e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
312e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
313e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
314e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testToString() {
315e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
316e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setDestfile("test.exec");
317e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAppend(false);
318e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("destfile=test.exec,append=false", options.toString());
319e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
320e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
321e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
322e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidOptionFormat() {
323e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		new AgentOptions("destfile");
324e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
325e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
326e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
327e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidOptionKey() {
328e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		new AgentOptions("destfile=test.exec,something=true");
329e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
330e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
331e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
332e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidOptionValue() {
333e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
334e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setDestfile("invalid,name.exec");
335e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
336e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
337e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test(expected = IllegalArgumentException.class)
338e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testInvalidPortOptionValue() {
339e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		new AgentOptions("port=-1234");
340e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
341e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
342e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
343e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testGetClassDumpDir() {
344e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions("classdumpdir=target/dump");
345e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("target/dump", options.getClassDumpDir());
346e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
347e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
348e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
349e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	public void testSetClassDumpDir() {
350e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
351e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setClassDumpDir("target/dump");
352e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("target/dump", options.getClassDumpDir());
353e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals("classdumpdir=target/dump", options.toString());
354e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
355e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
356e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
357e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	public void testGetJmx() {
358e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		AgentOptions options = new AgentOptions("jmx=true");
359e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		assertTrue(options.getJmx());
360e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	}
361e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann
362e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	@Test
363e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	public void testSetJmx() {
364e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		AgentOptions options = new AgentOptions();
365e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		options.setJmx(true);
366e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann		assertTrue(options.getJmx());
367e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	}
368e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann
369e2930e70cc2d5409732639f0bda3af36b27e6db4Marc R. Hoffmann	@Test
3709fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testGetVMArgumentWithNoOptions() {
371e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
372e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		String vmArgument = options.getVMArgument(defaultAgentJarFile);
373e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
374e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(
375e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				String.format("-javaagent:%s=", defaultAgentJarFile.toString()),
376e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				vmArgument);
377e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
378e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
379e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
3809fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testGetVMArgumentWithOneOption() {
381e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
382e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAppend(true);
383e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
384e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		String vmArgument = options.getVMArgument(defaultAgentJarFile);
385e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
386e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(
387e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				String.format("-javaagent:%s=append=true",
388e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov						defaultAgentJarFile.toString()), vmArgument);
389e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
390e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
391e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	@Test
3929fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testGetVMArgumentWithOptions() {
393e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		AgentOptions options = new AgentOptions();
394e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setAppend(true);
395e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		options.setDestfile("some test.exec");
396e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		String vmArgument = options.getVMArgument(defaultAgentJarFile);
397e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
398e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov		assertEquals(String.format(
399e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				"-javaagent:%s=destfile=some test.exec,append=true",
400e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov				defaultAgentJarFile.toString()), vmArgument);
401e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov	}
402e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov
4039fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	@Test
4049fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testGetQuotedVMArgument() {
4059fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		AgentOptions options = new AgentOptions();
4069fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		options.setSessionId("my session");
4079fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4089fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		String vmArgument = options.getQuotedVMArgument(defaultAgentJarFile);
4099fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4109fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		assertEquals(String.format("\"-javaagent:%s=sessionid=my session\"",
4119fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				defaultAgentJarFile.toString()), vmArgument);
4129fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	}
4139fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4149fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	@Test
4159fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testPrependVMArguments() {
4169fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		AgentOptions options = new AgentOptions();
4179fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4189fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		String vmArgument = options.prependVMArguments("a b c",
4199fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				defaultAgentJarFile);
4209fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4219fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		assertEquals(
4229fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				String.format("-javaagent:%s= a b c",
4239fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann						defaultAgentJarFile.toString()), vmArgument);
4249fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	}
4259fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4269fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	@Test
4279fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	public void testPrependVMArgumentsReplace() {
4289fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		AgentOptions options = new AgentOptions();
4299fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4309fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		String vmArgument = options.prependVMArguments(String.format(
4319fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				"a b -javaagent:%s=append=false c", defaultAgentJarFile),
4329fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				defaultAgentJarFile);
4339fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
4349fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann		assertEquals(
4359fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann				String.format("-javaagent:%s= a b c",
4369fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann						defaultAgentJarFile.toString()), vmArgument);
4379fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann	}
4389fdd14bd5cf0ad765135c8466dcaa9921c72c74bMarc R. Hoffmann
439e69ba4dbb015949c5d84ba7bbb0b53efac28bb23Evgeny Mandrikov}
440