phoenix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From codymar...@apache.org
Subject [2/2] phoenix git commit: PHOENIX-2227 Added the ability to Pherf to define a DDL statement that will be executed before a scenario is run to support dynamically creating multi-tenant views we are going to write and read from
Date Thu, 10 Sep 2015 20:49:02 GMT
PHOENIX-2227 Added the ability to Pherf to define a DDL statement that will be executed before
a scenario is run to support dynamically creating multi-tenant views we are going to write
and read from


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7eb0dcf1
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7eb0dcf1
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7eb0dcf1

Branch: refs/heads/4.5-HBase-1.1
Commit: 7eb0dcf1a98b6f3dc77ed17231c71660b2719a0b
Parents: 9c0ef45
Author: Jan <jfernando@salesforce.com>
Authored: Thu Sep 3 17:48:18 2015 -0700
Committer: Cody Marcel <cmarcel@cmarcel-wsl1.internal.salesforce.com>
Committed: Thu Sep 10 13:47:56 2015 -0700

----------------------------------------------------------------------
 .../org/apache/phoenix/pherf/DataIngestIT.java  | 25 ++++++++++++++++----
 .../phoenix/pherf/configuration/Scenario.java   | 13 ++++++++++
 .../apache/phoenix/pherf/util/PhoenixUtil.java  | 21 ++++++++++++++++
 .../phoenix/pherf/workload/WriteWorkload.java   |  5 +++-
 .../test/resources/scenario/test_scenario.xml   |  6 +++++
 5 files changed, 65 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb0dcf1/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/DataIngestIT.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/DataIngestIT.java b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/DataIngestIT.java
index 297f882..4fb5ccd 100644
--- a/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/DataIngestIT.java
+++ b/phoenix-pherf/src/it/java/org/apache/phoenix/pherf/DataIngestIT.java
@@ -18,10 +18,6 @@
 
 package org.apache.phoenix.pherf;
 
-import com.jcabi.jdbc.JdbcSession;
-import com.jcabi.jdbc.Outcome;
-
-import org.apache.phoenix.pherf.PherfConstants.GeneratePhoenixStats;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -35,6 +31,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.phoenix.pherf.PherfConstants.GeneratePhoenixStats;
 import org.apache.phoenix.pherf.configuration.Column;
 import org.apache.phoenix.pherf.configuration.DataModel;
 import org.apache.phoenix.pherf.configuration.DataTypeMapping;
@@ -177,6 +174,26 @@ public class DataIngestIT extends ResultBaseTestIT {
         assertExpectedNumberOfRecordsWritten(scenario);
     }
 
+    
+    @Test
+    public void testMultiTenantScenarioRunBeforeWriteWorkload() throws Exception {
+        // Arrange
+        Scenario scenario = parser.getScenarioByName("testMTDdlWriteScenario");
+        WorkloadExecutor executor = new WorkloadExecutor();
+        executor.add(new WriteWorkload(util, parser, scenario, GeneratePhoenixStats.NO));
+        
+        // Act
+        try {
+            // Wait for data to load up.
+            executor.get();
+            executor.shutdown();
+        } catch (Exception e) {
+            fail("Failed to load data. An exception was thrown: " + e.getMessage());
+        }
+
+        assertExpectedNumberOfRecordsWritten(scenario);
+    }
+    
     private void assertExpectedNumberOfRecordsWritten(Scenario scenario) throws Exception,
             SQLException {
         Connection connection = util.getConnection(scenario.getTenantId());

http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb0dcf1/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/configuration/Scenario.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/configuration/Scenario.java
b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/configuration/Scenario.java
index 6c949d8..200fdc5 100644
--- a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/configuration/Scenario.java
+++ b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/configuration/Scenario.java
@@ -39,6 +39,7 @@ public class Scenario {
     private WriteParams writeParams;
     private String name;
     private String tenantId;
+    private String ddl;
 
     public Scenario() {
         writeParams = new WriteParams();
@@ -178,6 +179,18 @@ public class Scenario {
         this.tenantId = tenantId;
     }
 
+    /**
+     * Scenario level DDL that is executed before running the scenario.
+     */
+    @XmlAttribute
+    public String getDdl() {
+        return ddl;
+    }
+    
+    public void setDdl(String ddl) {
+        this.ddl = ddl;
+    }
+    
     public WriteParams getWriteParams() {
         return writeParams;
     }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb0dcf1/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/util/PhoenixUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/util/PhoenixUtil.java b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/util/PhoenixUtil.java
index 19b6bd2..db967fc 100644
--- a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/util/PhoenixUtil.java
+++ b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/util/PhoenixUtil.java
@@ -246,6 +246,27 @@ public class PhoenixUtil {
             }
         }
     }
+    
+    /**
+     * Executes any ddl defined at the scenario level. This is executed before we commence
+     * the data load.
+     * 
+     * @throws Exception
+     */
+    public void executeScenarioDdl(Scenario scenario) throws Exception {
+        if (null != scenario.getDdl()) {
+            Connection conn = null;
+            try {
+                logger.info("\nExecuting DDL:" + scenario.getDdl() + " on tenantId:"
+                        + scenario.getTenantId());
+                executeStatement(scenario.getDdl(), conn = getConnection(scenario.getTenantId()));
+            } finally {
+                if (null != conn) {
+                    conn.close();
+                }
+            }
+        }
+    }
 
     public static String getZookeeper() {
 		return zookeeper;

http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb0dcf1/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/workload/WriteWorkload.java
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/workload/WriteWorkload.java
b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/workload/WriteWorkload.java
index d0b99af..6985abd 100644
--- a/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/workload/WriteWorkload.java
+++ b/phoenix-pherf/src/main/java/org/apache/phoenix/pherf/workload/WriteWorkload.java
@@ -163,7 +163,10 @@ public class WriteWorkload implements Workload {
             DataLoadThreadTime dataLoadThreadTime, Scenario scenario) throws Exception {
         logger.info("\nLoading " + scenario.getRowCount() + " rows for " + scenario.getTableName());
         long start = System.currentTimeMillis();
-
+        
+        // Execute any Scenario DDL before running workload
+        pUtil.executeScenarioDdl(scenario);
+        
         List<Future> writeBatches = getBatches(dataLoadThreadTime, scenario);
 
         waitForBatches(dataLoadTimeSummary, scenario, start, writeBatches);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb0dcf1/phoenix-pherf/src/test/resources/scenario/test_scenario.xml
----------------------------------------------------------------------
diff --git a/phoenix-pherf/src/test/resources/scenario/test_scenario.xml b/phoenix-pherf/src/test/resources/scenario/test_scenario.xml
index b5fe564..735e690 100644
--- a/phoenix-pherf/src/test/resources/scenario/test_scenario.xml
+++ b/phoenix-pherf/src/test/resources/scenario/test_scenario.xml
@@ -223,5 +223,11 @@
         <!-- Test writing to a Multi-tenant View -->
         <scenario tableName="PHERF.TEST_VIEW" tenantId="abcdefghijklmno" rowCount="100"
name="testMTWriteScenario">
         </scenario>
+        <!--  Test scenario DDL -->
+        <scenario tableName="PHERF.TEST_MT_VIEW" tenantId="abcdefghijklmno" 
+                    ddl="CREATE VIEW IF NOT EXISTS PHERF.TEST_MT_VIEW (field1 VARCHAR) AS
SELECT * FROM PHERF.TEST_MULTI_TENANT_TABLE" 
+                    rowCount="100" name="testMTDdlWriteScenario">
+        </scenario>
+        
     </scenarios>
 </datamodel>
\ No newline at end of file


Mime
View raw message