public void start() { WorkerProcessBuilder builder = workerFactory.create(); builder.applicationClasspath(classPathRegistry.getClassPath("ANT").getAsFiles()); builder.sharedPackages("org.apache.tools.ant"); builder.getJavaCommand().systemProperty("test.system.property", "value"); builder.getJavaCommand().environment("TEST_ENV_VAR", "value"); builder.worker(action); if (mainClass != null) { builder.getJavaCommand().setMain(mainClass); } proc = builder.build(); try { proc.start(); assertFalse(startFails); } catch (ExecException e) { assertTrue(startFails); return; } proc.getConnection().addIncoming(TestListenerInterface.class, exceptionListener); if (serverAction != null) { serverAction.execute(proc.getConnection()); } }
@Test public void createsAndConfiguresAWorkerProcess() throws Exception { final Set<File> processClassPath = Collections.singleton(new File("something.jar")); final org.gradle.internal.classpath.ClassPath classPath = context.mock(org.gradle.internal.classpath.ClassPath.class); context.checking( new Expectations() { { one(classPathRegistry).getClassPath("WORKER_PROCESS"); will(returnValue(classPath)); allowing(classPath).getAsFiles(); will(returnValue(processClassPath)); allowing(fileResolver).resolveLater("."); will( returnValue( new Factory<File>() { public File create() { return new File("."); } })); allowing(fileResolver).resolveFiles(with(Matchers.<Object>notNullValue())); will(returnValue(new SimpleFileCollection())); } }); WorkerProcessBuilder builder = factory.create(); assertThat(builder.getJavaCommand().getMain(), equalTo(GradleWorkerMain.class.getName())); assertThat(builder.getLogLevel(), equalTo(LogLevel.LIFECYCLE)); builder.worker(new TestAction()); builder.applicationClasspath(Arrays.asList(new File("app.jar"))); builder.sharedPackages("package1", "package2"); final Address serverAddress = new SocketInetAddress(InetAddress.getByName("127.0.0.1"), 40); context.checking( new Expectations() { { one(messagingServer).accept(with(notNullValue(Action.class))); will(returnValue(serverAddress)); one(idGenerator).generateId(); will(returnValue("<id>")); } }); WorkerProcess process = builder.build(); assertThat(process, instanceOf(DefaultWorkerProcess.class)); ObjectInputStream instr = new ObjectInputStream(builder.getJavaCommand().getStandardInput()); assertThat(instr.readObject(), instanceOf(IsolatedApplicationClassLoaderWorker.class)); }