package test.thread.parallelization.sample; import org.testng.ITestContext; import org.testng.annotations.DataProvider; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import test.thread.parallelization.TestNgRunStateTracker; import java.util.Map; import java.util.concurrent.TimeUnit; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.CLASS_INSTANCE; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.CLASS_NAME; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.DATA_PROVIDER_PARAM; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.METHOD_NAME; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.SUITE_NAME; import static test.thread.parallelization.TestNgRunStateTracker.EventInfo.TEST_NAME; import static test.thread.parallelization.TestNgRunStateTracker.TestNgRunEvent.TEST_METHOD_EXECUTION; public class TestClassKFiveMethodsWithDataProviderOnSomeMethodsAndNoDepsSample { @Test(dataProvider = "data-provider") public void testMethodA(String suiteName, String testName, String sleepFor, String dpVal) throws InterruptedException { long time = System.currentTimeMillis(); TestNgRunStateTracker.logEvent( TestNgRunStateTracker.EventLog.builder() .setEvent(TEST_METHOD_EXECUTION) .setTimeOfEvent(time) .setThread(Thread.currentThread()) .addData(METHOD_NAME, "testMethodA") .addData(CLASS_NAME, getClass().getCanonicalName()) .addData(CLASS_INSTANCE, this) .addData(TEST_NAME, testName) .addData(SUITE_NAME, suiteName) .addData(DATA_PROVIDER_PARAM, dpVal) .build() ); TimeUnit.MILLISECONDS.sleep(Integer.parseInt(sleepFor)); } @Parameters({ "suiteName", "testName", "sleepFor" }) @Test public void testMethodB(String suiteName, String testName, String sleepFor) throws InterruptedException { long time = System.currentTimeMillis(); TestNgRunStateTracker.logEvent( TestNgRunStateTracker.EventLog.builder() .setEvent(TEST_METHOD_EXECUTION) .setTimeOfEvent(time) .setThread(Thread.currentThread()) .addData(METHOD_NAME, "testMethodB") .addData(CLASS_NAME, getClass().getCanonicalName()) .addData(CLASS_INSTANCE, this) .addData(TEST_NAME, testName) .addData(SUITE_NAME, suiteName) .build() ); TimeUnit.MILLISECONDS.sleep(Integer.parseInt(sleepFor)); } @Test(dataProvider = "data-provider") public void testMethodC(String suiteName, String testName, String sleepFor, String dpVal) throws InterruptedException { long time = System.currentTimeMillis(); TestNgRunStateTracker.logEvent( TestNgRunStateTracker.EventLog.builder() .setEvent(TEST_METHOD_EXECUTION) .setTimeOfEvent(time) .setThread(Thread.currentThread()) .addData(METHOD_NAME, "testMethodC") .addData(CLASS_NAME, getClass().getCanonicalName()) .addData(CLASS_INSTANCE, this) .addData(TEST_NAME, testName) .addData(SUITE_NAME, suiteName) .addData(DATA_PROVIDER_PARAM, dpVal) .build() ); TimeUnit.MILLISECONDS.sleep(Integer.parseInt(sleepFor)); } @Parameters({ "suiteName", "testName", "sleepFor" }) @Test public void testMethodD(String suiteName, String testName, String sleepFor) throws InterruptedException { long time = System.currentTimeMillis(); TestNgRunStateTracker.logEvent( TestNgRunStateTracker.EventLog.builder() .setEvent(TEST_METHOD_EXECUTION) .setTimeOfEvent(time) .setThread(Thread.currentThread()) .addData(METHOD_NAME, "testMethodD") .addData(CLASS_NAME, getClass().getCanonicalName()) .addData(CLASS_INSTANCE, this) .addData(TEST_NAME, testName) .addData(SUITE_NAME, suiteName) .build() ); TimeUnit.MILLISECONDS.sleep(Integer.parseInt(sleepFor)); } @Test(dataProvider = "data-provider") public void testMethodE(String suiteName, String testName, String sleepFor, String dpVal) throws InterruptedException { long time = System.currentTimeMillis(); TestNgRunStateTracker.logEvent( TestNgRunStateTracker.EventLog.builder() .setEvent(TEST_METHOD_EXECUTION) .setTimeOfEvent(time) .setThread(Thread.currentThread()) .addData(METHOD_NAME, "testMethodE") .addData(CLASS_NAME, getClass().getCanonicalName()) .addData(CLASS_INSTANCE, this) .addData(TEST_NAME, testName) .addData(SUITE_NAME, suiteName) .addData(DATA_PROVIDER_PARAM, dpVal) .build() ); TimeUnit.MILLISECONDS.sleep(Integer.parseInt(sleepFor)); } @DataProvider(name = "data-provider") public Object[][] dataProvider(ITestContext context) { Map<String,String> params = context.getCurrentXmlTest().getAllParameters(); String suiteName = params.get("suiteName"); String testName = params.get("testName"); String sleepFor = params.get("sleepFor"); String dataProviderParam = params.get("dataProviderParam"); String[] dataProviderVals = dataProviderParam.split(","); Object[][] dataToProvide = new Object[dataProviderVals.length][4]; for(int i = 0; i < dataProviderVals.length; i ++) { dataToProvide[i][0] = suiteName; dataToProvide[i][1] = testName; dataToProvide[i][2] = sleepFor; dataToProvide[i][3] = dataProviderVals[i]; } return dataToProvide; } }