1 package org.apache.helix.integration;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Date;
23
24 import org.apache.helix.ExternalCommand;
25 import org.apache.helix.ScriptTestHelper;
26 import org.apache.helix.TestHelper;
27 import org.testng.Assert;
28 import org.testng.annotations.Test;
29
30
31 public class TestFailOverPerf1kp
32 {
33
34
35 public void testFailOverPerf1kp() throws Exception
36 {
37
38
39 String className = TestHelper.getTestClassName();
40 String methodName = TestHelper.getTestMethodName();
41 String testName = className + "_" + methodName;
42
43 System.out.println("START " + testName + " at "
44 + new Date(System.currentTimeMillis()));
45
46 ExternalCommand cmd = ScriptTestHelper.runCommandLineTest("helix_random_kill_local_startzk.sh");
47 String output = cmd.getStringOutput("UTF8");
48 int i = getStateTransitionLatency(0, output);
49 int j = output.indexOf("ms", i);
50 long latency = Long.parseLong(output.substring(i, j));
51 System.out.println("startup latency: " + latency);
52
53 i = getStateTransitionLatency(i, output);
54 j = output.indexOf("ms", i);
55 latency = Long.parseLong(output.substring(i, j));
56 System.out.println("failover latency: " + latency);
57 Assert.assertTrue(latency < 800, "failover latency for 1k partition test should < 800ms");
58
59 System.out.println("END " + testName + " at "
60 + new Date(System.currentTimeMillis()));
61
62 }
63
64 int getStateTransitionLatency(int start, String output)
65 {
66 final String pattern = "state transition latency: ";
67 int i = output.indexOf(pattern, start) + pattern.length();
68
69
70 return i;
71 }
72 }