16337249b87d2de0e14797f03e87fb9c981294308Cédric Beustpackage test.thread;
26337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
36337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.annotations.AfterClass;
46337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.annotations.AfterMethod;
56337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.annotations.BeforeClass;
66337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.annotations.BeforeMethod;
76337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.annotations.Test;
86337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport org.testng.collections.Lists;
96337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
106337249b87d2de0e14797f03e87fb9c981294308Cédric Beustimport java.util.List;
116337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
126337249b87d2de0e14797f03e87fb9c981294308Cédric Beustpublic class MultiThreadedDependentSampleTest {
136337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public static List<String> m_methods = Lists.newArrayList();
146337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
156337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @BeforeClass
166337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void bc() {
176337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//    log("beforeClass");
186337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
196337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
206337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @AfterClass
216337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void ac() {
226337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//    log("afterClass");
236337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
246337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
256337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @BeforeMethod
266337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void bm() {
276337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//    log("beforeMethod");
286337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
296337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
306337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @AfterMethod
316337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void am() {
326337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//    log("afterMethod");
336337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
346337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
356337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "1")
366337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void a1() {
376337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
386337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("a1");
396337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
406337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
416337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "1")
426337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void a2() {
436337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
446337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("a2");
456337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
466337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
4781b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  @Test(groups = "1")
4881b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  public void a3() {
4981b9582101c1c347601618e6f0e63d3fda270022Cédric Beust    logThread();
5081b9582101c1c347601618e6f0e63d3fda270022Cédric Beust    log("a3");
5181b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  }
5281b9582101c1c347601618e6f0e63d3fda270022Cédric Beust
536337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "2", dependsOnGroups = "1")
546337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void b1() {
556337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
566337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("b1");
576337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
586337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
596337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "2", dependsOnGroups = "1")
606337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void b2() {
616337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
626337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("b2");
636337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
646337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
656337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "2", dependsOnGroups = "1")
666337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void b3() {
676337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
686337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("b3");
696337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
706337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
716337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(groups = "2", dependsOnGroups = "1")
726337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void b4() {
736337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
746337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("b4");
756337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
76892b08c1f1afd198fd8ccbf804de28b7ce12f547nullin
7781b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  @Test(groups = "2", dependsOnGroups = "1")
7881b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  public void b5() {
7981b9582101c1c347601618e6f0e63d3fda270022Cédric Beust    logThread();
8081b9582101c1c347601618e6f0e63d3fda270022Cédric Beust    log("b5");
8181b9582101c1c347601618e6f0e63d3fda270022Cédric Beust  }
826337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
836337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(dependsOnGroups = "2")
846337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void c1() {
856337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
866337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("c1");
876337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
886337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
896337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test(dependsOnGroups = { "1" })
906337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void d() {
916337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    logThread();
926337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("d");
936337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
946337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
956337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test
966337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void x() {
976337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("x");
986337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
996337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
1006337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  @Test
1016337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  public void y() {
1026337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    log("y");
1036337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
104f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust
105f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  @Test
106f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  public void z() {
107f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust    log("z");
108f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  }
109f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust
110f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  @Test
111f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  public void t() {
112f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust    log("t");
113f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust  }
114f4bff96ccba4529912e8f66458338e94505859c1Cédric Beust
1156337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  //  @Test(groups = "mytest", dependsOnMethods = "g")
1166337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//  public void f() {
1176337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//  }
1186337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//
1196337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//
1206337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//  @AfterMethod
1216337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//  public void after() {
1226337249b87d2de0e14797f03e87fb9c981294308Cédric Beust//  }
1236337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
1246337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  private void logThread() {
1256337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    long id = Thread.currentThread().getId();
1266337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    Helper.getMap(getClass().getName()).put(id, id);
1276337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
1286337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
1296337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  private void log(String string) {
1306337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    synchronized(m_methods) {
1316337249b87d2de0e14797f03e87fb9c981294308Cédric Beust      m_methods.add(string);
1326337249b87d2de0e14797f03e87fb9c981294308Cédric Beust    }
1336337249b87d2de0e14797f03e87fb9c981294308Cédric Beust  }
1346337249b87d2de0e14797f03e87fb9c981294308Cédric Beust
1356337249b87d2de0e14797f03e87fb9c981294308Cédric Beust}
136