All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pitest.distributed.slave.RemoteExecutor Maven / Gradle / Ivy

// Copyright 2010 Henry Coles
// Licensed under the Apache License, Version 2.0 (the "License"); 
// you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
// Unless required by applicable law or agreed to in writing, 
// software distributed under the License is distributed on an "AS IS" BASIS, 
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
// See the License for the specific language governing permissions and limitations under the License. 

package org.pitest.distributed.slave;

import static org.pitest.util.Unchecked.translateCheckedException;

import org.pitest.distributed.SharedNames;
import org.pitest.distributed.message.ResultMessage;
import org.pitest.distributed.message.RunDetails;
import org.pitest.extension.ResultCollector;
import org.pitest.extension.TestUnit;
import org.pitest.internal.IsolationUtils;

import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.ITopic;

public class RemoteExecutor implements Runnable {

  private final String            groupXML;
  private final RunDetails        run;
  private final ClassLoader       loader;
  private final HazelcastInstance hazelcast;

  public RemoteExecutor(final String testGroupXML, final RunDetails run,
      final HazelcastInstance hazelcast, final ClassLoader loader) {
    this.groupXML = testGroupXML;
    this.run = run;
    this.hazelcast = hazelcast;
    this.loader = loader;
  }

  public void run() {
    final ITopic topic = this.hazelcast
        .getTopic(SharedNames.TEST_RESULTS);
    final ResultCollector rc = new SlaveResultCollector(this.run, topic);
    IsolationUtils.setContextClassLoader(this.loader);
    final TestUnit deserializedGroup = xmlToTestGroup(this.groupXML,
        this.loader);
    // for (final TestUnit each : deserializedGroup) {
    deserializedGroup.execute(this.loader, rc);
    // }

  }

  private TestUnit xmlToTestGroup(final String xml, final ClassLoader cl) {
    try {
      return (TestUnit) IsolationUtils.fromXml(xml, cl);
    } catch (final Exception ex) {
      throw translateCheckedException(ex);
    }
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy