View Javadoc

1   package org.apache.helix.integration;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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    // TODO: renable this test. disable it because the script is not running properly on apache jenkins
34    // @Test
35    public void testFailOverPerf1kp() throws Exception
36    {
37      // Logger.getRootLogger().setLevel(Level.INFO);
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  //    String latencyStr = output.substring(i, j);
69  //    System.out.println(latencyStr);
70      return i;
71    }
72  }