Package org.testng.eclipse.ui

Source Code of org.testng.eclipse.ui.WatchResultThread

package org.testng.eclipse.ui;

import org.testng.remote.strprotocol.IRemoteSuiteListener;
import org.testng.remote.strprotocol.IRemoteTestListener;
import org.testng.reporters.XMLReporter;
import org.testng.xml.ResultXMLParser;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
* Create a thread that monitors testng-results.xml.
*
* @author Cedric Beust <cedric@beust.com>
*/
public class WatchResultThread {
  private static final boolean DEBUG = false;

  private Runnable m_watchResultRunnable;
  private boolean m_watchResults = true;
  private Thread m_watchResultThread;

  public WatchResultThread(final String path, final IRemoteSuiteListener suiteListener,
      final IRemoteTestListener testListener)
  {
    m_watchResultRunnable = new Runnable() {
      public void run() {
        File f = new File(path, XMLReporter.FILE_NAME);
        long timeStamp = f.lastModified();
        p("Watching " + path);
        while (m_watchResults) {
          long t = f.lastModified();
          p("Comparing " + t + " and " + timeStamp + " for " + f);
          if (t != timeStamp) {
            p("The file changed, updating the view");
            timeStamp = t;
            ResultXMLParser parser = new ResultXMLParser(suiteListener, testListener);
            try {
              parser.parse(path, new FileInputStream(f), false /* don't load classes */);
            } catch (FileNotFoundException e) {
              // Ignore
            }
          }

          try {
            Thread.sleep(5000);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        p("No longer watching " + path);
      }
    };
    m_watchResultThread = new Thread(m_watchResultRunnable);
    m_watchResultThread.start();
  }

  private static void p(String string) {
    if (DEBUG) {
      System.out.println("[WatchResultThread] " + string);
    }
  }

  public void stopWatching() {
    m_watchResults = false;
  }
}
TOP

Related Classes of org.testng.eclipse.ui.WatchResultThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.