From 9de58175d6d0de26452e3b86149c0a9a099cf767 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Thu, 24 Mar 2022 15:46:14 -0400 Subject: [PATCH 01/15] working on cleaning up and adding missing tests --- .../benchmarks/noop/procedures/NoOp.java | 2 +- .../ResourceStresserBenchmark.java | 4 +- .../seats/procedures/FindOpenSeats.java | 25 +- .../benchmarks/twitter/TwitterLoader.java | 4 +- .../benchmarks/auctionmark/ddl-generic.sql | 2 +- .../benchmarks/chbenchmark/ddl-generic.sql | 22 +- .../benchmarks/epinions/ddl-generic.sql | 68 ++-- .../resources/benchmarks/tatp/ddl-generic.sql | 134 +++---- .../resources/benchmarks/tpcc/ddl-generic.sql | 255 +++++++------- .../resources/benchmarks/tpch/ddl-generic.sql | 36 +- .../benchmarks/twitter/ddl-generic.sql | 71 ++-- .../benchmarks/voter/ddl-generic.sql | 15 +- .../benchmarks/wikipedia/ddl-generic.sql | 330 +++++++++--------- .../api/AbstractTestBenchmarkModule.java | 66 ++-- .../oltpbenchmark/api/AbstractTestCase.java | 140 +++++--- .../oltpbenchmark/api/AbstractTestLoader.java | 118 +++---- .../oltpbenchmark/api/AbstractTestWorker.java | 37 +- .../auctionmark/TestAuctionMarkBenchmark.java | 24 +- .../auctionmark/TestAuctionMarkLoader.java | 13 +- .../auctionmark/TestAuctionMarkWorker.java | 29 +- .../chbenchmark/TestCHBenCHmark.java | 18 +- .../chbenchmark/TestCHBenCHmarkLoader.java | 36 ++ .../chbenchmark/TestCHBenCHmarkWorker.java | 36 ++ .../epinions/TestEpinionsBenchmark.java | 17 +- .../epinions/TestEpinionsLoader.java} | 42 +-- .../epinions/TestEpinionsWorker.java | 37 ++ .../benchmarks/noop/TestNoOpBenchmark.java | 19 +- .../benchmarks/noop/TestNoOpLoader.java | 41 +++ .../benchmarks/noop/TestNoOpWorker.java | 36 ++ .../TestResourceStresserBenchmark.java | 19 +- .../TestResourceStresserLoader.java | 19 + .../TestResourceStresserWorker.java | 19 + .../benchmarks/seats/TestSEATSBenchmark.java | 18 +- .../benchmarks/seats/TestSEATSLoader.java | 12 +- .../benchmarks/seats/TestSEATSWorker.java | 14 +- .../smallbank/TestSmallBankBenchmark.java | 19 +- .../smallbank/TestSmallBankLoader.java | 13 +- .../smallbank/TestSmallBankWorker.java | 12 +- .../benchmarks/tatp/TestTATPBenchmark.java | 19 +- .../benchmarks/tatp/TestTATPLoader.java | 13 +- .../benchmarks/tatp/TestTATPWorker.java | 12 +- .../benchmarks/tpcc/TestTPCCBenchmark.java | 19 +- .../benchmarks/tpcc/TestTPCCLoader.java | 13 +- .../benchmarks/tpcc/TestTPCCWorker.java | 20 ++ .../benchmarks/tpch/TestTPCHBenchmark.java | 60 ++-- .../benchmarks/tpch/TestTPCHLoader.java | 13 +- .../benchmarks/tpch/TestTPCHWorker.java | 19 + .../twitter/TestTwitterBenchmark.java | 16 +- .../benchmarks/twitter/TestTwitterLoader.java | 19 +- .../benchmarks/twitter/TestTwitterWorker.java | 19 + .../benchmarks/voter/TestVoterBenchmark.java | 19 +- .../benchmarks/voter/TestVoterLoader.java | 19 +- .../benchmarks/voter/TestVoterWorker.java | 12 +- .../wikipedia/TestWikipediaBenchmark.java | 19 +- .../wikipedia/TestWikipediaLoader.java | 39 +-- .../wikipedia/TestWikipediaWorker.java | 19 + .../benchmarks/ycsb/TestYCSBBenchmark.java | 19 +- .../benchmarks/ycsb/TestYCSBLoader.java | 12 +- .../benchmarks/ycsb/TestYCSBWorker.java | 19 + .../util/TestTableDataIterable.java | 79 ----- src/test/resources/log4j.properties | 5 +- 61 files changed, 1401 insertions(+), 924 deletions(-) create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java rename src/test/java/com/oltpbenchmark/{api/MockBenchmark.java => benchmarks/epinions/TestEpinionsLoader.java} (52%) create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java create mode 100644 src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java delete mode 100644 src/test/java/com/oltpbenchmark/util/TestTableDataIterable.java diff --git a/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java b/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java index a67548804..6eb1a51ed 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java @@ -38,7 +38,7 @@ public class NoOp extends Procedure { // The query only contains a semi-colon // That is enough for the DBMS to have to parse it and do something - public final SQLStmt noopStmt = new SQLStmt(";"); + public final SQLStmt noopStmt = new SQLStmt("select 1"); public void run(Connection conn) { try (PreparedStatement stmt = this.getPreparedStatement(conn, noopStmt)) { diff --git a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/ResourceStresserBenchmark.java b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/ResourceStresserBenchmark.java index 6d2235dfe..fc3233234 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/ResourceStresserBenchmark.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/ResourceStresserBenchmark.java @@ -48,8 +48,8 @@ protected List> makeWorkersImpl() { int keyRange = numKeys / workConf.getTerminals(); LOG.warn("numkeys={}, keyRange={}", numKeys, keyRange); // TODO: check ranges - for (int i = 0; i < workConf.getTerminals(); ++i) { - workers.add(new ResourceStresserWorker(this, i, numKeys, keyRange)); + for (int i = 0; i < workConf.getTerminals(); i++) { + workers.add(new ResourceStresserWorker(this, i + 1, numKeys, keyRange)); } return workers; diff --git a/src/main/java/com/oltpbenchmark/benchmarks/seats/procedures/FindOpenSeats.java b/src/main/java/com/oltpbenchmark/benchmarks/seats/procedures/FindOpenSeats.java index 5a370e8d4..d7f31424d 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/seats/procedures/FindOpenSeats.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/seats/procedures/FindOpenSeats.java @@ -83,23 +83,26 @@ public Object[][] run(Connection conn, String f_id) throws SQLException { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; - double base_price; - long seats_total; - long seats_left; - double seat_price; + double base_price = 0.0; + long seats_total = 0; + long seats_left = 0; + double seat_price = 0.0; // First calculate the seat price using the flight's base price // and the number of seats that remaining try (PreparedStatement f_stmt = this.getPreparedStatement(conn, GetFlight)) { f_stmt.setString(1, f_id); try (ResultSet f_results = f_stmt.executeQuery()) { - f_results.next(); - - // long status = results[0].getLong(0); - base_price = f_results.getDouble(2); - seats_total = f_results.getLong(3); - seats_left = f_results.getLong(4); - seat_price = f_results.getDouble(5); + if (f_results.next()) { + + // long status = results[0].getLong(0); + base_price = f_results.getDouble(2); + seats_total = f_results.getLong(3); + seats_left = f_results.getLong(4); + seat_price = f_results.getDouble(5); + } else { + LOG.warn("flight {} had no seats; this may be a data problem or a code problem. previously this threw an unhandled exception.", f_id); + } } } diff --git a/src/main/java/com/oltpbenchmark/benchmarks/twitter/TwitterLoader.java b/src/main/java/com/oltpbenchmark/benchmarks/twitter/TwitterLoader.java index 137b7cfc0..59568d04a 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/twitter/TwitterLoader.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/twitter/TwitterLoader.java @@ -287,7 +287,7 @@ protected void loadFollowData(Connection conn, int lo, int hi) throws SQLExcepti total++; batchSize++; - f++; + if ((batchSize % workConf.getBatchSize()) == 0) { followsInsert.executeBatch(); @@ -300,6 +300,8 @@ protected void loadFollowData(Connection conn, int lo, int hi) throws SQLExcepti } } } + + f++; } } if (batchSize > 0) { diff --git a/src/main/resources/benchmarks/auctionmark/ddl-generic.sql b/src/main/resources/benchmarks/auctionmark/ddl-generic.sql index ed0447ad5..fff85ec3a 100644 --- a/src/main/resources/benchmarks/auctionmark/ddl-generic.sql +++ b/src/main/resources/benchmarks/auctionmark/ddl-generic.sql @@ -23,7 +23,7 @@ CREATE TABLE config_profile ( cfp_scale_factor FLOAT NOT NULL, cfp_loader_start TIMESTAMP NOT NULL, cfp_loader_stop TIMESTAMP NOT NULL, - cfp_user_item_histogram TEXT NOT NULL + cfp_user_item_histogram VARCHAR(1024) NOT NULL ); -- ================================================================ diff --git a/src/main/resources/benchmarks/chbenchmark/ddl-generic.sql b/src/main/resources/benchmarks/chbenchmark/ddl-generic.sql index 19660774f..79ff3bf40 100644 --- a/src/main/resources/benchmarks/chbenchmark/ddl-generic.sql +++ b/src/main/resources/benchmarks/chbenchmark/ddl-generic.sql @@ -1,16 +1,18 @@ -DROP TABLE IF EXISTS region; -DROP TABLE IF EXISTS nation; -DROP TABLE IF EXISTS supplier; +DROP TABLE IF EXISTS region CASCADE; +DROP TABLE IF EXISTS nation CASCADE; +DROP TABLE IF EXISTS supplier CASCADE; -create table region ( - r_regionkey int not null, - r_name char(55) not null, - r_comment char(152) not null, - PRIMARY KEY ( r_regionkey ) +create table region +( + r_regionkey int not null, + r_name char(55) not null, + r_comment char(152) not null, + PRIMARY KEY (r_regionkey) ); -create table nation ( - n_nationkey int not null, +create table nation +( + n_nationkey int not null, n_name char(25) not null, n_regionkey int not null references region(r_regionkey) ON DELETE CASCADE, n_comment char(152) not null, diff --git a/src/main/resources/benchmarks/epinions/ddl-generic.sql b/src/main/resources/benchmarks/epinions/ddl-generic.sql index f3ced5bdb..aa7214db4 100644 --- a/src/main/resources/benchmarks/epinions/ddl-generic.sql +++ b/src/main/resources/benchmarks/epinions/ddl-generic.sql @@ -1,49 +1,53 @@ -DROP TABLE IF EXISTS useracct; -CREATE TABLE useracct ( - u_id int NOT NULL, - name varchar(128) DEFAULT NULL, - PRIMARY KEY (u_id) +DROP TABLE IF EXISTS useracct CASCADE; +CREATE TABLE useracct +( + u_id int NOT NULL, + name varchar(128) DEFAULT NULL, + PRIMARY KEY (u_id) ); -DROP TABLE IF EXISTS item; -CREATE TABLE item ( - i_id int NOT NULL, - title varchar(20) DEFAULT NULL, - PRIMARY KEY (i_id) +DROP TABLE IF EXISTS item CASCADE; +CREATE TABLE item +( + i_id int NOT NULL, + title varchar(20) DEFAULT NULL, + PRIMARY KEY (i_id) ); -DROP TABLE IF EXISTS review; -CREATE TABLE review ( - a_id int NOT NULL, - u_id int NOT NULL REFERENCES useracct (u_id), - i_id int NOT NULL REFERENCES item (i_id), - rating int DEFAULT NULL, - rank int DEFAULT NULL +DROP TABLE IF EXISTS review CASCADE; +CREATE TABLE review +( + a_id int NOT NULL, + u_id int NOT NULL REFERENCES useracct (u_id), + i_id int NOT NULL REFERENCES item (i_id), + rating int DEFAULT NULL, + rank int DEFAULT NULL ); CREATE INDEX IDX_RATING_UID ON review (u_id); CREATE INDEX IDX_RATING_AID ON review (a_id); CREATE INDEX IDX_RATING_IID ON review (i_id); -DROP TABLE IF EXISTS review_rating; +DROP TABLE IF EXISTS review_rating CASCADE; CREATE TABLE review_rating ( - u_id int NOT NULL REFERENCES useracct (u_id), - a_id int NOT NULL, - rating int NOT NULL, - status int NOT NULL, - creation_date datetime DEFAULT NULL, - last_mod_date datetime DEFAULT NULL, - type int DEFAULT NULL, - vertical_id int DEFAULT NULL + u_id int NOT NULL REFERENCES useracct (u_id), + a_id int NOT NULL, + rating int NOT NULL, + status int NOT NULL, + creation_date datetime DEFAULT NULL, + last_mod_date datetime DEFAULT NULL, + type int DEFAULT NULL, + vertical_id int DEFAULT NULL ); CREATE INDEX IDX_REVIEW_RATING_UID ON review_rating (u_id); CREATE INDEX IDX_REVIEW_RATING_AID ON review_rating (a_id); -DROP TABLE IF EXISTS trust; -CREATE TABLE trust ( - source_u_id int NOT NULL REFERENCES useracct (u_id), - target_u_id int NOT NULL REFERENCES useracct (u_id), - trust int NOT NULL, - creation_date datetime DEFAULT NULL +DROP TABLE IF EXISTS trust CASCADE; +CREATE TABLE trust +( + source_u_id int NOT NULL REFERENCES useracct (u_id), + target_u_id int NOT NULL REFERENCES useracct (u_id), + trust int NOT NULL, + creation_date datetime DEFAULT NULL ); CREATE INDEX IDX_TRUST_SID ON trust (source_u_id); CREATE INDEX IDX_TRUST_TID ON trust (target_u_id); \ No newline at end of file diff --git a/src/main/resources/benchmarks/tatp/ddl-generic.sql b/src/main/resources/benchmarks/tatp/ddl-generic.sql index f5c3b5671..3b0052249 100644 --- a/src/main/resources/benchmarks/tatp/ddl-generic.sql +++ b/src/main/resources/benchmarks/tatp/ddl-generic.sql @@ -1,73 +1,77 @@ -DROP TABLE IF EXISTS SUBSCRIBER; -CREATE TABLE SUBSCRIBER ( - s_id INTEGER NOT NULL PRIMARY KEY, - sub_nbr VARCHAR(15) NOT NULL UNIQUE, - bit_1 TINYINT, - bit_2 TINYINT, - bit_3 TINYINT, - bit_4 TINYINT, - bit_5 TINYINT, - bit_6 TINYINT, - bit_7 TINYINT, - bit_8 TINYINT, - bit_9 TINYINT, - bit_10 TINYINT, - hex_1 TINYINT, - hex_2 TINYINT, - hex_3 TINYINT, - hex_4 TINYINT, - hex_5 TINYINT, - hex_6 TINYINT, - hex_7 TINYINT, - hex_8 TINYINT, - hex_9 TINYINT, - hex_10 TINYINT, - byte2_1 SMALLINT, - byte2_2 SMALLINT, - byte2_3 SMALLINT, - byte2_4 SMALLINT, - byte2_5 SMALLINT, - byte2_6 SMALLINT, - byte2_7 SMALLINT, - byte2_8 SMALLINT, - byte2_9 SMALLINT, - byte2_10 SMALLINT, - msc_location INTEGER, - vlr_location INTEGER +DROP TABLE IF EXISTS SUBSCRIBER CASCADE; +CREATE TABLE SUBSCRIBER +( + s_id INTEGER NOT NULL PRIMARY KEY, + sub_nbr VARCHAR(15) NOT NULL UNIQUE, + bit_1 TINYINT, + bit_2 TINYINT, + bit_3 TINYINT, + bit_4 TINYINT, + bit_5 TINYINT, + bit_6 TINYINT, + bit_7 TINYINT, + bit_8 TINYINT, + bit_9 TINYINT, + bit_10 TINYINT, + hex_1 TINYINT, + hex_2 TINYINT, + hex_3 TINYINT, + hex_4 TINYINT, + hex_5 TINYINT, + hex_6 TINYINT, + hex_7 TINYINT, + hex_8 TINYINT, + hex_9 TINYINT, + hex_10 TINYINT, + byte2_1 SMALLINT, + byte2_2 SMALLINT, + byte2_3 SMALLINT, + byte2_4 SMALLINT, + byte2_5 SMALLINT, + byte2_6 SMALLINT, + byte2_7 SMALLINT, + byte2_8 SMALLINT, + byte2_9 SMALLINT, + byte2_10 SMALLINT, + msc_location INTEGER, + vlr_location INTEGER ); -DROP TABLE IF EXISTS ACCESS_INFO; -CREATE TABLE ACCESS_INFO ( - s_id INTEGER NOT NULL, - ai_type TINYINT NOT NULL, - data1 SMALLINT, - data2 SMALLINT, - data3 VARCHAR(3), - data4 VARCHAR(5), - PRIMARY KEY(s_id, ai_type), - FOREIGN KEY (s_id) REFERENCES SUBSCRIBER (s_id) +DROP TABLE IF EXISTS ACCESS_INFO CASCADE; +CREATE TABLE ACCESS_INFO +( + s_id INTEGER NOT NULL, + ai_type TINYINT NOT NULL, + data1 SMALLINT, + data2 SMALLINT, + data3 VARCHAR(3), + data4 VARCHAR(5), + PRIMARY KEY (s_id, ai_type), + FOREIGN KEY (s_id) REFERENCES SUBSCRIBER (s_id) ); -DROP TABLE IF EXISTS SPECIAL_FACILITY; -CREATE TABLE SPECIAL_FACILITY ( - s_id INTEGER NOT NULL, - sf_type TINYINT NOT NULL, - is_active TINYINT NOT NULL, - error_cntrl SMALLINT, - data_a SMALLINT, - data_b VARCHAR(5), - PRIMARY KEY (s_id, sf_type), - FOREIGN KEY (s_id) REFERENCES SUBSCRIBER (s_id) +DROP TABLE IF EXISTS SPECIAL_FACILITY CASCADE; +CREATE TABLE SPECIAL_FACILITY +( + s_id INTEGER NOT NULL, + sf_type TINYINT NOT NULL, + is_active TINYINT NOT NULL, + error_cntrl SMALLINT, + data_a SMALLINT, + data_b VARCHAR(5), + PRIMARY KEY (s_id, sf_type), + FOREIGN KEY (s_id) REFERENCES SUBSCRIBER (s_id) ); -DROP TABLE IF EXISTS CALL_FORWARDING; -CREATE TABLE CALL_FORWARDING ( - s_id INTEGER NOT NULL, - sf_type TINYINT NOT NULL, - start_time TINYINT NOT NULL, - end_time TINYINT, - numberx VARCHAR(15), - PRIMARY KEY (s_id, sf_type, start_time), - FOREIGN KEY (s_id, sf_type) REFERENCES SPECIAL_FACILITY(s_id, sf_type) +DROP TABLE IF EXISTS CALL_FORWARDING CASCADE; +CREATE TABLE CALL_FORWARDING +( + s_id INTEGER NOT NULL, + sf_type TINYINT NOT NULL, + start_time TINYINT NOT NULL, + end_time TINYINT, + numberx VARCHAR(15), + PRIMARY KEY (s_id, sf_type, start_time), + FOREIGN KEY (s_id, sf_type) REFERENCES SPECIAL_FACILITY (s_id, sf_type) ); CREATE INDEX IDX_CF ON CALL_FORWARDING (S_ID); \ No newline at end of file diff --git a/src/main/resources/benchmarks/tpcc/ddl-generic.sql b/src/main/resources/benchmarks/tpcc/ddl-generic.sql index 0d919f65c..1b3273934 100644 --- a/src/main/resources/benchmarks/tpcc/ddl-generic.sql +++ b/src/main/resources/benchmarks/tpcc/ddl-generic.sql @@ -1,145 +1,154 @@ -DROP TABLE IF EXISTS WAREHOUSE; -CREATE TABLE WAREHOUSE ( - W_ID INT NOT NULL, - W_YTD DECIMAL(12,2) NOT NULL, - W_TAX DECIMAL(4,4) NOT NULL, - W_NAME VARCHAR(10) NOT NULL, - W_STREET_1 VARCHAR(20) NOT NULL, - W_STREET_2 VARCHAR(20) NOT NULL, - W_CITY VARCHAR(20) NOT NULL, - W_STATE CHAR(2) NOT NULL, - W_ZIP CHAR(9) NOT NULL, - PRIMARY KEY (W_ID) +DROP TABLE IF EXISTS WAREHOUSE CASCADE; +CREATE TABLE WAREHOUSE +( + W_ID INT NOT NULL, + W_YTD DECIMAL(12, 2) NOT NULL, + W_TAX DECIMAL(4, 4) NOT NULL, + W_NAME VARCHAR(10) NOT NULL, + W_STREET_1 VARCHAR(20) NOT NULL, + W_STREET_2 VARCHAR(20) NOT NULL, + W_CITY VARCHAR(20) NOT NULL, + W_STATE CHAR(2) NOT NULL, + W_ZIP CHAR(9) NOT NULL, + PRIMARY KEY (W_ID) ); -DROP TABLE IF EXISTS DISTRICT; -CREATE TABLE DISTRICT ( - D_W_ID INT NOT NULL REFERENCES WAREHOUSE (W_ID), - D_ID INT NOT NULL, - D_YTD DECIMAL(12,2) NOT NULL, - D_TAX DECIMAL(4,4) NOT NULL, - D_NEXT_O_ID INT NOT NULL, - D_NAME VARCHAR(10) NOT NULL, - D_STREET_1 VARCHAR(20) NOT NULL, - D_STREET_2 VARCHAR(20) NOT NULL, - D_CITY VARCHAR(20) NOT NULL, - D_STATE CHAR(2) NOT NULL, - D_ZIP CHAR(9) NOT NULL, - PRIMARY KEY (D_W_ID,D_ID) +DROP TABLE IF EXISTS DISTRICT CASCADE; +CREATE TABLE DISTRICT +( + D_W_ID INT NOT NULL REFERENCES WAREHOUSE (W_ID), + D_ID INT NOT NULL, + D_YTD DECIMAL(12, 2) NOT NULL, + D_TAX DECIMAL(4, 4) NOT NULL, + D_NEXT_O_ID INT NOT NULL, + D_NAME VARCHAR(10) NOT NULL, + D_STREET_1 VARCHAR(20) NOT NULL, + D_STREET_2 VARCHAR(20) NOT NULL, + D_CITY VARCHAR(20) NOT NULL, + D_STATE CHAR(2) NOT NULL, + D_ZIP CHAR(9) NOT NULL, + PRIMARY KEY (D_W_ID, D_ID) ); -- TODO: C_SINCE ON UPDATE CURRENT_TIMESTAMP, -DROP TABLE IF EXISTS CUSTOMER; -CREATE TABLE CUSTOMER ( - C_W_ID INT NOT NULL, - C_D_ID INT NOT NULL, - C_ID INT NOT NULL, - C_DISCOUNT DECIMAL(4,4) NOT NULL, - C_CREDIT CHAR(2) NOT NULL, - C_LAST VARCHAR(16) NOT NULL, - C_FIRST VARCHAR(16) NOT NULL, - C_CREDIT_LIM DECIMAL(12,2) NOT NULL, - C_BALANCE DECIMAL(12,2) NOT NULL, - C_YTD_PAYMENT FLOAT NOT NULL, - C_PAYMENT_CNT INT NOT NULL, - C_DELIVERY_CNT INT NOT NULL, - C_STREET_1 VARCHAR(20) NOT NULL, - C_STREET_2 VARCHAR(20) NOT NULL, - C_CITY VARCHAR(20) NOT NULL, - C_STATE CHAR(2) NOT NULL, - C_ZIP CHAR(9) NOT NULL, - C_PHONE CHAR(16) NOT NULL, - C_SINCE TIMESTAMP NOT NULL, - C_MIDDLE CHAR(2) NOT NULL, - C_DATA VARCHAR(500) NOT NULL, - PRIMARY KEY (C_W_ID, C_D_ID, C_ID), - CONSTRAINT C_FKEY_D FOREIGN KEY (C_W_ID, C_D_ID) REFERENCES DISTRICT (D_W_ID, D_ID) +DROP TABLE IF EXISTS CUSTOMER CASCADE; +CREATE TABLE CUSTOMER +( + C_W_ID INT NOT NULL, + C_D_ID INT NOT NULL, + C_ID INT NOT NULL, + C_DISCOUNT DECIMAL(4, 4) NOT NULL, + C_CREDIT CHAR(2) NOT NULL, + C_LAST VARCHAR(16) NOT NULL, + C_FIRST VARCHAR(16) NOT NULL, + C_CREDIT_LIM DECIMAL(12, 2) NOT NULL, + C_BALANCE DECIMAL(12, 2) NOT NULL, + C_YTD_PAYMENT FLOAT NOT NULL, + C_PAYMENT_CNT INT NOT NULL, + C_DELIVERY_CNT INT NOT NULL, + C_STREET_1 VARCHAR(20) NOT NULL, + C_STREET_2 VARCHAR(20) NOT NULL, + C_CITY VARCHAR(20) NOT NULL, + C_STATE CHAR(2) NOT NULL, + C_ZIP CHAR(9) NOT NULL, + C_PHONE CHAR(16) NOT NULL, + C_SINCE TIMESTAMP NOT NULL, + C_MIDDLE CHAR(2) NOT NULL, + C_DATA VARCHAR(500) NOT NULL, + PRIMARY KEY (C_W_ID, C_D_ID, C_ID), + CONSTRAINT C_FKEY_D FOREIGN KEY (C_W_ID, C_D_ID) REFERENCES DISTRICT (D_W_ID, D_ID) ); -CREATE INDEX IDX_CUSTOMER_NAME ON CUSTOMER (C_W_ID,C_D_ID,C_LAST,C_FIRST); +CREATE INDEX IDX_CUSTOMER_NAME ON CUSTOMER (C_W_ID, C_D_ID, C_LAST, C_FIRST); -- TODO: O_ENTRY_D ON UPDATE CURRENT_TIMESTAMP -DROP TABLE IF EXISTS OORDER; -CREATE TABLE OORDER ( - O_W_ID INT NOT NULL, - O_D_ID INT NOT NULL, - O_ID INT NOT NULL, - O_C_ID INT NOT NULL, - O_CARRIER_ID INT DEFAULT NULL, - O_OL_CNT INT NOT NULL, - O_ALL_LOCAL INT NOT NULL, - O_ENTRY_D TIMESTAMP NOT NULL, - PRIMARY KEY (O_W_ID,O_D_ID,O_ID), - UNIQUE (O_W_ID,O_D_ID,O_C_ID,O_ID), - CONSTRAINT O_FKEY_C FOREIGN KEY (O_W_ID, O_D_ID, O_C_ID) REFERENCES CUSTOMER (C_W_ID, C_D_ID, C_ID) +DROP TABLE IF EXISTS OORDER CASCADE; +CREATE TABLE OORDER +( + O_W_ID INT NOT NULL, + O_D_ID INT NOT NULL, + O_ID INT NOT NULL, + O_C_ID INT NOT NULL, + O_CARRIER_ID INT DEFAULT NULL, + O_OL_CNT INT NOT NULL, + O_ALL_LOCAL INT NOT NULL, + O_ENTRY_D TIMESTAMP NOT NULL, + PRIMARY KEY (O_W_ID, O_D_ID, O_ID), + UNIQUE (O_W_ID, O_D_ID, O_C_ID, O_ID), + CONSTRAINT O_FKEY_C FOREIGN KEY (O_W_ID, O_D_ID, O_C_ID) REFERENCES CUSTOMER (C_W_ID, C_D_ID, C_ID) ); -DROP TABLE IF EXISTS NEW_ORDER; -CREATE TABLE NEW_ORDER ( - NO_W_ID INT NOT NULL, - NO_D_ID INT NOT NULL, - NO_O_ID INT NOT NULL, - PRIMARY KEY (NO_W_ID,NO_D_ID,NO_O_ID), - CONSTRAINT NO_FKEY_O FOREIGN KEY (NO_W_ID, NO_D_ID, NO_O_ID) REFERENCES OORDER (O_W_ID, O_D_ID, O_ID) +DROP TABLE IF EXISTS NEW_ORDER CASCADE; +CREATE TABLE NEW_ORDER +( + NO_W_ID INT NOT NULL, + NO_D_ID INT NOT NULL, + NO_O_ID INT NOT NULL, + PRIMARY KEY (NO_W_ID, NO_D_ID, NO_O_ID), + CONSTRAINT NO_FKEY_O FOREIGN KEY (NO_W_ID, NO_D_ID, NO_O_ID) REFERENCES OORDER (O_W_ID, O_D_ID, O_ID) ); -- TODO: H_DATE ON UPDATE CURRENT_TIMESTAMP -DROP TABLE IF EXISTS HISTORY; -CREATE TABLE HISTORY ( - H_C_ID INT NOT NULL, - H_C_D_ID INT NOT NULL, - H_C_W_ID INT NOT NULL, - H_D_ID INT NOT NULL, - H_W_ID INT NOT NULL, - H_DATE TIMESTAMP NOT NULL, - H_AMOUNT DECIMAL(6,2) NOT NULL, - H_DATA VARCHAR(24) NOT NULL, - CONSTRAINT H_FKEY_C FOREIGN KEY (H_C_W_ID, H_C_D_ID, H_C_ID) REFERENCES CUSTOMER (C_W_ID, C_D_ID, C_ID), - CONSTRAINT H_FKEY_D FOREIGN KEY (H_W_ID, H_D_ID) REFERENCES DISTRICT (D_W_ID, D_ID) +DROP TABLE IF EXISTS HISTORY CASCADE; +CREATE TABLE HISTORY +( + H_C_ID INT NOT NULL, + H_C_D_ID INT NOT NULL, + H_C_W_ID INT NOT NULL, + H_D_ID INT NOT NULL, + H_W_ID INT NOT NULL, + H_DATE TIMESTAMP NOT NULL, + H_AMOUNT DECIMAL(6, 2) NOT NULL, + H_DATA VARCHAR(24) NOT NULL, + CONSTRAINT H_FKEY_C FOREIGN KEY (H_C_W_ID, H_C_D_ID, H_C_ID) REFERENCES CUSTOMER (C_W_ID, C_D_ID, C_ID), + CONSTRAINT H_FKEY_D FOREIGN KEY (H_W_ID, H_D_ID) REFERENCES DISTRICT (D_W_ID, D_ID) ); -DROP TABLE IF EXISTS ITEM; -CREATE TABLE ITEM ( - I_ID INT NOT NULL, - I_NAME VARCHAR(24) NOT NULL, - I_PRICE DECIMAL(5,2) NOT NULL, - I_DATA VARCHAR(50) NOT NULL, - I_IM_ID INT NOT NULL, - PRIMARY KEY (I_ID) +DROP TABLE IF EXISTS ITEM CASCADE; +CREATE TABLE ITEM +( + I_ID INT NOT NULL, + I_NAME VARCHAR(24) NOT NULL, + I_PRICE DECIMAL(5, 2) NOT NULL, + I_DATA VARCHAR(50) NOT NULL, + I_IM_ID INT NOT NULL, + PRIMARY KEY (I_ID) ); -DROP TABLE IF EXISTS STOCK; -CREATE TABLE STOCK ( - S_W_ID INT NOT NULL REFERENCES WAREHOUSE (W_ID), - S_I_ID INT NOT NULL REFERENCES ITEM (I_ID), - S_QUANTITY int NOT NULL, - S_YTD DECIMAL(8,2) NOT NULL, - S_ORDER_CNT INT NOT NULL, - S_REMOTE_CNT INT NOT NULL, - S_DATA VARCHAR(50) NOT NULL, - S_DIST_01 CHAR(24) NOT NULL, - S_DIST_02 CHAR(24) NOT NULL, - S_DIST_03 CHAR(24) NOT NULL, - S_DIST_04 CHAR(24) NOT NULL, - S_DIST_05 CHAR(24) NOT NULL, - S_DIST_06 CHAR(24) NOT NULL, - S_DIST_07 CHAR(24) NOT NULL, - S_DIST_08 CHAR(24) NOT NULL, - S_DIST_09 CHAR(24) NOT NULL, - S_DIST_10 CHAR(24) NOT NULL, - PRIMARY KEY (S_W_ID, S_I_ID) +DROP TABLE IF EXISTS STOCK CASCADE; +CREATE TABLE STOCK +( + S_W_ID INT NOT NULL REFERENCES WAREHOUSE (W_ID), + S_I_ID INT NOT NULL REFERENCES ITEM (I_ID), + S_QUANTITY int NOT NULL, + S_YTD DECIMAL(8, 2) NOT NULL, + S_ORDER_CNT INT NOT NULL, + S_REMOTE_CNT INT NOT NULL, + S_DATA VARCHAR(50) NOT NULL, + S_DIST_01 CHAR(24) NOT NULL, + S_DIST_02 CHAR(24) NOT NULL, + S_DIST_03 CHAR(24) NOT NULL, + S_DIST_04 CHAR(24) NOT NULL, + S_DIST_05 CHAR(24) NOT NULL, + S_DIST_06 CHAR(24) NOT NULL, + S_DIST_07 CHAR(24) NOT NULL, + S_DIST_08 CHAR(24) NOT NULL, + S_DIST_09 CHAR(24) NOT NULL, + S_DIST_10 CHAR(24) NOT NULL, + PRIMARY KEY (S_W_ID, S_I_ID) ); -DROP TABLE IF EXISTS ORDER_LINE; -CREATE TABLE ORDER_LINE ( - OL_W_ID INT NOT NULL, - OL_D_ID INT NOT NULL, - OL_O_ID INT NOT NULL, - OL_NUMBER INT NOT NULL, - OL_I_ID INT NOT NULL, - OL_DELIVERY_D TIMESTAMP, - OL_AMOUNT DECIMAL(6,2) NOT NULL, - OL_SUPPLY_W_ID INT NOT NULL, - OL_QUANTITY DECIMAL(6,2) NOT NULL, +DROP TABLE IF EXISTS ORDER_LINE CASCADE; +CREATE TABLE ORDER_LINE +( + OL_W_ID INT NOT NULL, + OL_D_ID INT NOT NULL, + OL_O_ID INT NOT NULL, + OL_NUMBER INT NOT NULL, + OL_I_ID INT NOT NULL, + OL_DELIVERY_D TIMESTAMP, + OL_AMOUNT DECIMAL(6, 2) NOT NULL, + OL_SUPPLY_W_ID INT NOT NULL, + OL_QUANTITY DECIMAL(6, 2) NOT NULL, OL_DIST_INFO CHAR(24) NOT NULL, PRIMARY KEY (OL_W_ID,OL_D_ID,OL_O_ID,OL_NUMBER), CONSTRAINT OL_FKEY_O FOREIGN KEY (OL_W_ID, OL_D_ID, OL_O_ID) REFERENCES OORDER (O_W_ID, O_D_ID, O_ID), diff --git a/src/main/resources/benchmarks/tpch/ddl-generic.sql b/src/main/resources/benchmarks/tpch/ddl-generic.sql index 2001d19ee..afdbacbdc 100644 --- a/src/main/resources/benchmarks/tpch/ddl-generic.sql +++ b/src/main/resources/benchmarks/tpch/ddl-generic.sql @@ -1,21 +1,27 @@ -DROP TABLE IF EXISTS nation; -DROP TABLE IF EXISTS region; -DROP TABLE IF EXISTS part; -DROP TABLE IF EXISTS supplier; -DROP TABLE IF EXISTS partsupp; -DROP TABLE IF EXISTS orders; -DROP TABLE IF EXISTS customer; -DROP TABLE IF EXISTS lineitem; +DROP TABLE IF EXISTS nation CASCADE; +DROP TABLE IF EXISTS region CASCADE; +DROP TABLE IF EXISTS part CASCADE; +DROP TABLE IF EXISTS supplier CASCADE; +DROP TABLE IF EXISTS partsupp CASCADE; +DROP TABLE IF EXISTS orders CASCADE; +DROP TABLE IF EXISTS customer CASCADE; +DROP TABLE IF EXISTS lineitem CASCADE; -- Sccsid: @(#)dss.ddl 2.1.8.1 -CREATE TABLE nation ( n_nationkey INTEGER NOT NULL, - n_name CHAR(25) NOT NULL, - n_regionkey INTEGER NOT NULL, - n_comment VARCHAR(152)); +CREATE TABLE nation +( + n_nationkey INTEGER NOT NULL, + n_name CHAR(25) NOT NULL, + n_regionkey INTEGER NOT NULL, + n_comment VARCHAR(152) +); -CREATE TABLE region ( r_regionkey INTEGER NOT NULL, - r_name CHAR(25) NOT NULL, - r_comment VARCHAR(152)); +CREATE TABLE region +( + r_regionkey INTEGER NOT NULL, + r_name CHAR(25) NOT NULL, + r_comment VARCHAR(152) +); CREATE TABLE part ( p_partkey INTEGER NOT NULL, p_name VARCHAR(55) NOT NULL, diff --git a/src/main/resources/benchmarks/twitter/ddl-generic.sql b/src/main/resources/benchmarks/twitter/ddl-generic.sql index fec4ec6a4..c944ad458 100644 --- a/src/main/resources/benchmarks/twitter/ddl-generic.sql +++ b/src/main/resources/benchmarks/twitter/ddl-generic.sql @@ -1,50 +1,55 @@ -- MySQL ddl from Twitter dump -DROP TABLE IF EXISTS user_profiles; -CREATE TABLE user_profiles ( - uid int NOT NULL, - name varchar(255) DEFAULT NULL, - email varchar(255) DEFAULT NULL, - partitionid int DEFAULT NULL, - partitionid2 tinyint DEFAULT NULL, - followers int DEFAULT NULL, - PRIMARY KEY (uid) +DROP TABLE IF EXISTS user_profiles CASCADE; +CREATE TABLE user_profiles +( + uid int NOT NULL, + name varchar(255) DEFAULT NULL, + email varchar(255) DEFAULT NULL, + partitionid int DEFAULT NULL, + partitionid2 tinyint DEFAULT NULL, + followers int DEFAULT NULL, + PRIMARY KEY (uid) ); CREATE INDEX IDX_USER_FOLLOWERS ON user_profiles (followers); CREATE INDEX IDX_USER_PARTITION ON user_profiles (partitionid); -DROP TABLE IF EXISTS followers; -CREATE TABLE followers ( - f1 int NOT NULL REFERENCES user_profiles (uid), - f2 int NOT NULL REFERENCES user_profiles (uid), - PRIMARY KEY (f1,f2) +DROP TABLE IF EXISTS followers CASCADE; +CREATE TABLE followers +( + f1 int NOT NULL REFERENCES user_profiles (uid), + f2 int NOT NULL REFERENCES user_profiles (uid), + PRIMARY KEY (f1, f2) ); -DROP TABLE IF EXISTS follows; -CREATE TABLE follows ( - f1 int NOT NULL REFERENCES user_profiles (uid), - f2 int NOT NULL REFERENCES user_profiles (uid), - PRIMARY KEY (f1,f2) +DROP TABLE IF EXISTS follows CASCADE; +CREATE TABLE follows +( + f1 int NOT NULL REFERENCES user_profiles (uid), + f2 int NOT NULL REFERENCES user_profiles (uid), + PRIMARY KEY (f1, f2) ); -- TODO: id AUTO_INCREMENT -DROP TABLE IF EXISTS tweets; -CREATE TABLE tweets ( - id bigint NOT NULL, - uid int NOT NULL REFERENCES user_profiles (uid), - text char(140) NOT NULL, - createdate datetime DEFAULT NULL, - PRIMARY KEY (id) +DROP TABLE IF EXISTS tweets CASCADE; +CREATE TABLE tweets +( + id bigint NOT NULL, + uid int NOT NULL REFERENCES user_profiles (uid), + text char(140) NOT NULL, + createdate datetime DEFAULT NULL, + PRIMARY KEY (id) ); CREATE INDEX IDX_TWEETS_UID ON tweets (uid); -- TODO: id auto_increment -DROP TABLE IF EXISTS added_tweets; -CREATE TABLE added_tweets ( - id bigint NOT NULL, - uid int NOT NULL REFERENCES user_profiles (uid), - text char(140) NOT NULL, - createdate datetime DEFAULT NULL, - PRIMARY KEY (id) +DROP TABLE IF EXISTS added_tweets CASCADE; +CREATE TABLE added_tweets +( + id bigint NOT NULL, + uid int NOT NULL REFERENCES user_profiles (uid), + text char(140) NOT NULL, + createdate datetime DEFAULT NULL, + PRIMARY KEY (id) ); CREATE INDEX IDX_ADDED_TWEETS_UID ON added_tweets (uid); \ No newline at end of file diff --git a/src/main/resources/benchmarks/voter/ddl-generic.sql b/src/main/resources/benchmarks/voter/ddl-generic.sql index 596dd6ac6..a18452093 100644 --- a/src/main/resources/benchmarks/voter/ddl-generic.sql +++ b/src/main/resources/benchmarks/voter/ddl-generic.sql @@ -1,12 +1,15 @@ +DROP VIEW IF EXISTS V_VOTES_BY_PHONE_NUMBER CASCADE; +DROP VIEW IF EXISTS V_VOTES_BY_CONTESTANT_NUMBER_STATE CASCADE; +DROP TABLE IF EXISTS VOTES CASCADE; +DROP TABLE IF EXISTS AREA_CODE_STATE CASCADE; +DROP TABLE IF EXISTS CONTESTANTS CASCADE; + -- contestants table holds the contestants numbers (for voting) and names CREATE TABLE CONTESTANTS ( - contestant_number integer NOT NULL -, contestant_name varchar(50) NOT NULL -, PRIMARY KEY - ( - contestant_number - ) + contestant_number integer NOT NULL, + contestant_name varchar(50) NOT NULL, + PRIMARY KEY (contestant_number) ); -- Map of Area Codes and States for geolocation classification of incoming calls diff --git a/src/main/resources/benchmarks/wikipedia/ddl-generic.sql b/src/main/resources/benchmarks/wikipedia/ddl-generic.sql index 8b758ce8a..e76be036b 100644 --- a/src/main/resources/benchmarks/wikipedia/ddl-generic.sql +++ b/src/main/resources/benchmarks/wikipedia/ddl-generic.sql @@ -1,147 +1,154 @@ -- TODO: ipb_id auto_increment -DROP TABLE IF EXISTS ipblocks; -CREATE TABLE ipblocks ( - ipb_id int NOT NULL, - ipb_address varbinary(1024) NOT NULL, - ipb_user int NOT NULL, - ipb_by int NOT NULL, - ipb_by_text varbinary(255) NOT NULL, - ipb_reason varbinary(1024) NOT NULL, - ipb_timestamp binary(14) NOT NULL, - ipb_auto tinyint NOT NULL, - ipb_anon_only tinyint NOT NULL, - ipb_create_account tinyint NOT NULL , - ipb_enable_autoblock tinyint NOT NULL , - ipb_expiry varbinary(14) NOT NULL, - ipb_range_start varbinary(1024) NOT NULL, - ipb_range_end varbinary(1024) NOT NULL, - ipb_deleted tinyint NOT NULL , - ipb_block_email tinyint NOT NULL , - ipb_allow_usertalk tinyint NOT NULL , - PRIMARY KEY (ipb_id), - UNIQUE (ipb_address,ipb_user,ipb_auto,ipb_anon_only) +DROP TABLE IF EXISTS ipblocks CASCADE; +CREATE TABLE ipblocks +( + ipb_id int NOT NULL, + ipb_address varbinary(1024) NOT NULL, + ipb_user int NOT NULL, + ipb_by int NOT NULL, + ipb_by_text varbinary(255) NOT NULL, + ipb_reason varbinary(1024) NOT NULL, + ipb_timestamp binary(14) NOT NULL, + ipb_auto tinyint NOT NULL, + ipb_anon_only tinyint NOT NULL, + ipb_create_account tinyint NOT NULL , + ipb_enable_autoblock tinyint NOT NULL , + ipb_expiry varbinary(14) NOT NULL, + ipb_range_start varbinary(1024) NOT NULL, + ipb_range_end varbinary(1024) NOT NULL, + ipb_deleted tinyint NOT NULL , + ipb_block_email tinyint NOT NULL , + ipb_allow_usertalk tinyint NOT NULL , + PRIMARY KEY (ipb_id), + UNIQUE (ipb_address, ipb_user, ipb_auto, ipb_anon_only) ); CREATE INDEX IDX_IPB_USER ON ipblocks (ipb_user); -CREATE INDEX IDX_IPB_RANGE ON ipblocks (ipb_range_start,ipb_range_end); +CREATE INDEX IDX_IPB_RANGE ON ipblocks (ipb_range_start, ipb_range_end); CREATE INDEX IDX_IPB_TIMESTAMP ON ipblocks (ipb_timestamp); CREATE INDEX IDX_IPB_EXPIRY ON ipblocks (ipb_expiry); -- TOOD: user_id auto_increment -DROP TABLE IF EXISTS useracct; -CREATE TABLE useracct ( - user_id int NOT NULL, - user_name varchar(255) NOT NULL, - user_real_name varchar(255) NOT NULL, - user_password varchar(1024) NOT NULL, - user_newpassword varchar(1024) NOT NULL, - user_newpass_time varchar(14) DEFAULT NULL, - user_email varchar(1024) NOT NULL, - user_options varchar(1024) NOT NULL, - user_touched varchar(14) NOT NULL, - user_token char(32) NOT NULL, - user_email_authenticated char(14) DEFAULT NULL, - user_email_token char(32) DEFAULT NULL, - user_email_token_expires char(14) DEFAULT NULL, - user_registration varchar(14) DEFAULT NULL, - user_editcount int DEFAULT NULL, - PRIMARY KEY (user_id), - UNIQUE (user_name) +DROP TABLE IF EXISTS useracct CASCADE; +CREATE TABLE useracct +( + user_id int NOT NULL, + user_name varchar(255) NOT NULL, + user_real_name varchar(255) NOT NULL, + user_password varchar(1024) NOT NULL, + user_newpassword varchar(1024) NOT NULL, + user_newpass_time varchar(14) DEFAULT NULL, + user_email varchar(1024) NOT NULL, + user_options varchar(1024) NOT NULL, + user_touched varchar(14) NOT NULL, + user_token char(32) NOT NULL, + user_email_authenticated char(14) DEFAULT NULL, + user_email_token char(32) DEFAULT NULL, + user_email_token_expires char(14) DEFAULT NULL, + user_registration varchar(14) DEFAULT NULL, + user_editcount int DEFAULT NULL, + PRIMARY KEY (user_id), + UNIQUE (user_name) ); CREATE INDEX IDX_USER_EMAIL_TOKEN ON useracct (user_email_token); -- TODO: log_id auto_increment -DROP TABLE IF EXISTS logging; -CREATE TABLE logging ( - log_id int NOT NULL, - log_type varbinary(32) NOT NULL, - log_action varbinary(32) NOT NULL, - log_timestamp binary(14) NOT NULL, - log_user int NOT NULL, - log_namespace int NOT NULL, - log_title varbinary(255) NOT NULL, - log_comment varbinary(255) NOT NULL, - log_params varbinary(1024) NOT NULL, - log_deleted tinyint NOT NULL, - log_user_text varbinary(255) NOT NULL, - log_page int DEFAULT NULL, - PRIMARY KEY (log_id) +DROP TABLE IF EXISTS logging CASCADE; +CREATE TABLE logging +( + log_id int NOT NULL, + log_type varbinary(32) NOT NULL, + log_action varbinary(32) NOT NULL, + log_timestamp binary(14) NOT NULL, + log_user int NOT NULL, + log_namespace int NOT NULL, + log_title varbinary(255) NOT NULL, + log_comment varbinary(255) NOT NULL, + log_params varbinary(1024) NOT NULL, + log_deleted tinyint NOT NULL, + log_user_text varbinary(255) NOT NULL, + log_page int DEFAULT NULL, + PRIMARY KEY (log_id) ); -CREATE INDEX IDX_LOG_TYPE_TIME ON logging (log_type,log_timestamp); -CREATE INDEX IDX_LOG_USER_TIME ON logging (log_user,log_timestamp); -CREATE INDEX IDX_LOG_PAGE_TIME ON logging (log_namespace,log_title,log_timestamp); +CREATE INDEX IDX_LOG_TYPE_TIME ON logging (log_type, log_timestamp); +CREATE INDEX IDX_LOG_USER_TIME ON logging (log_user, log_timestamp); +CREATE INDEX IDX_LOG_PAGE_TIME ON logging (log_namespace, log_title, log_timestamp); CREATE INDEX IDX_LOG_TIMES ON logging (log_timestamp); -CREATE INDEX IDX_LOG_USER_TYPE_TIME ON logging (log_user,log_type,log_timestamp); -CREATE INDEX IDX_LOG_PAGE_ID_TIME ON logging (log_page,log_timestamp); +CREATE INDEX IDX_LOG_USER_TYPE_TIME ON logging (log_user, log_type, log_timestamp); +CREATE INDEX IDX_LOG_PAGE_ID_TIME ON logging (log_page, log_timestamp); -- TODO: page_id auto_increment -DROP TABLE IF EXISTS page; -CREATE TABLE page ( - page_id int NOT NULL, - page_namespace int NOT NULL, - page_title varchar(255) NOT NULL, - page_restrictions varchar(1024) NOT NULL, - page_counter bigint NOT NULL, - page_is_redirect tinyint NOT NULL, - page_is_new tinyint NOT NULL, - page_random double NOT NULL, - page_touched binary(14) NOT NULL, - page_latest int NOT NULL, - page_len int NOT NULL, - PRIMARY KEY (page_id), - UNIQUE (page_namespace,page_title) +DROP TABLE IF EXISTS page CASCADE; +CREATE TABLE page +( + page_id int NOT NULL, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(1024) NOT NULL, + page_counter bigint NOT NULL, + page_is_redirect tinyint NOT NULL, + page_is_new tinyint NOT NULL, + page_random double NOT NULL, + page_touched binary(14) NOT NULL, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id), + UNIQUE (page_namespace, page_title) ); CREATE INDEX IDX_PAGE_RANDOM ON page (page_random); CREATE INDEX IDX_PAGE_LEN ON page (page_len); -- TODO: page_id auto_increment -DROP TABLE IF EXISTS page_backup; -CREATE TABLE page_backup ( - page_id int NOT NULL, - page_namespace int NOT NULL, - page_title varchar(255) NOT NULL, - page_restrictions varchar(1024) NOT NULL, - page_counter bigint NOT NULL, - page_is_redirect tinyint NOT NULL, - page_is_new tinyint NOT NULL, - page_random double NOT NULL, - page_touched binary(14) NOT NULL, - page_latest int NOT NULL, - page_len int NOT NULL, - PRIMARY KEY (page_id), - UNIQUE (page_namespace,page_title) +DROP TABLE IF EXISTS page_backup CASCADE; +CREATE TABLE page_backup +( + page_id int NOT NULL, + page_namespace int NOT NULL, + page_title varchar(255) NOT NULL, + page_restrictions varchar(1024) NOT NULL, + page_counter bigint NOT NULL, + page_is_redirect tinyint NOT NULL, + page_is_new tinyint NOT NULL, + page_random double NOT NULL, + page_touched binary(14) NOT NULL, + page_latest int NOT NULL, + page_len int NOT NULL, + PRIMARY KEY (page_id), + UNIQUE (page_namespace, page_title) ); CREATE INDEX IDX_PAGE_BACKUP_RANDOM ON page_backup (page_random); CREATE INDEX IDX_PAGE_BACKUP_LEN ON page_backup (page_len); -DROP TABLE IF EXISTS page_restrictions; -CREATE TABLE page_restrictions ( - pr_page int NOT NULL, - pr_type varbinary(60) NOT NULL, - pr_level varbinary(60) NOT NULL, - pr_cascade tinyint NOT NULL, - pr_user int DEFAULT NULL, - pr_expiry varbinary(14) DEFAULT NULL, - pr_id int NOT NULL, - PRIMARY KEY (pr_id), - UNIQUE (pr_page,pr_type) +DROP TABLE IF EXISTS page_restrictions CASCADE; +CREATE TABLE page_restrictions +( + pr_page int NOT NULL, + pr_type varbinary(60) NOT NULL, + pr_level varbinary(60) NOT NULL, + pr_cascade tinyint NOT NULL, + pr_user int DEFAULT NULL, + pr_expiry varbinary(14) DEFAULT NULL, + pr_id int NOT NULL, + PRIMARY KEY (pr_id), + UNIQUE (pr_page, pr_type) ); -CREATE INDEX IDX_PR_TYPELEVEL ON page_restrictions (pr_type,pr_level); +CREATE INDEX IDX_PR_TYPELEVEL ON page_restrictions (pr_type, pr_level); CREATE INDEX IDX_PR_LEVEL ON page_restrictions (pr_level); CREATE INDEX IDX_PR_CASCADE ON page_restrictions (pr_cascade); -- TOOD: rc_id auto_increment -DROP TABLE IF EXISTS recentchanges; -CREATE TABLE recentchanges ( - rc_id int NOT NULL, - rc_timestamp varbinary(14) NOT NULL, - rc_cur_time varbinary(14) NOT NULL, - rc_user int NOT NULL, - rc_user_text varbinary(255) NOT NULL, - rc_namespace int NOT NULL, - rc_title varbinary(255) NOT NULL, - rc_comment varbinary(255) NOT NULL, - rc_minor tinyint NOT NULL, +DROP TABLE IF EXISTS recentchanges CASCADE; +CREATE TABLE recentchanges +( + rc_id int NOT NULL, + rc_timestamp varbinary(14) NOT NULL, + rc_cur_time varbinary(14) NOT NULL, + rc_user int NOT NULL, + rc_user_text varbinary(255) NOT NULL, + rc_namespace int NOT NULL, + rc_title varbinary(255) NOT NULL, + rc_comment varbinary(255) NOT NULL, + rc_minor tinyint NOT NULL, rc_bot tinyint NOT NULL, rc_new tinyint NOT NULL, rc_cur_id int NOT NULL, @@ -162,65 +169,70 @@ CREATE TABLE recentchanges ( PRIMARY KEY (rc_id) ); CREATE INDEX IDX_RC_TIMESTAMP ON recentchanges (rc_timestamp); -CREATE INDEX IDX_RC_NAMESPACE_TITLE ON recentchanges (rc_namespace,rc_title); +CREATE INDEX IDX_RC_NAMESPACE_TITLE ON recentchanges (rc_namespace, rc_title); CREATE INDEX IDX_RC_CUR_ID ON recentchanges (rc_cur_id); -CREATE INDEX IDX_NEW_NAME_TIMESTAMP ON recentchanges (rc_new,rc_namespace,rc_timestamp); +CREATE INDEX IDX_NEW_NAME_TIMESTAMP ON recentchanges (rc_new, rc_namespace, rc_timestamp); CREATE INDEX IDX_RC_IP ON recentchanges (rc_ip); -CREATE INDEX IDX_RC_NS_USERTEXT ON recentchanges (rc_namespace,rc_user_text); -CREATE INDEX IDX_RC_USER_TEXT ON recentchanges (rc_user_text,rc_timestamp); +CREATE INDEX IDX_RC_NS_USERTEXT ON recentchanges (rc_namespace, rc_user_text); +CREATE INDEX IDX_RC_USER_TEXT ON recentchanges (rc_user_text, rc_timestamp); -- TODO: rev_id auto_increment -DROP TABLE IF EXISTS revision; -CREATE TABLE revision ( - rev_id int NOT NULL, - rev_page int NOT NULL, - rev_text_id int NOT NULL, - rev_comment varchar(1024) NOT NULL, - rev_user int NOT NULL, - rev_user_text varchar(255) NOT NULL, - rev_timestamp binary(14) NOT NULL, - rev_minor_edit tinyint NOT NULL, - rev_deleted tinyint NOT NULL, - rev_len int DEFAULT NULL, - rev_parent_id int DEFAULT NULL, - PRIMARY KEY (rev_id), - UNIQUE (rev_page,rev_id) +DROP TABLE IF EXISTS revision CASCADE; +CREATE TABLE revision +( + rev_id int NOT NULL, + rev_page int NOT NULL, + rev_text_id int NOT NULL, + rev_comment varchar(1024) NOT NULL, + rev_user int NOT NULL, + rev_user_text varchar(255) NOT NULL, + rev_timestamp binary(14) NOT NULL, + rev_minor_edit tinyint NOT NULL, + rev_deleted tinyint NOT NULL, + rev_len int DEFAULT NULL, + rev_parent_id int DEFAULT NULL, + PRIMARY KEY (rev_id), + UNIQUE (rev_page, rev_id) ); CREATE INDEX IDX_REV_TIMESTAMP ON revision (rev_timestamp); -CREATE INDEX IDX_PAGE_TIMESTAMP ON revision (rev_page,rev_timestamp); -CREATE INDEX IDX_USER_TIMESTAMP ON revision (rev_user,rev_timestamp); -CREATE INDEX IDX_USERTEXT_TIMESTAMP ON revision (rev_user_text,rev_timestamp); +CREATE INDEX IDX_PAGE_TIMESTAMP ON revision (rev_page, rev_timestamp); +CREATE INDEX IDX_USER_TIMESTAMP ON revision (rev_user, rev_timestamp); +CREATE INDEX IDX_USERTEXT_TIMESTAMP ON revision (rev_user_text, rev_timestamp); -- TODO old_id auto_increment -DROP TABLE IF EXISTS text; -CREATE TABLE text ( - old_id int NOT NULL, - old_text TEXT NOT NULL, - old_flags varchar(1024) NOT NULL, - old_page int DEFAULT NULL, - PRIMARY KEY (old_id) +DROP TABLE IF EXISTS text CASCADE; +CREATE TABLE text +( + old_id int NOT NULL, + old_text TEXT NOT NULL, + old_flags varchar(1024) NOT NULL, + old_page int DEFAULT NULL, + PRIMARY KEY (old_id) ); -DROP TABLE IF EXISTS user_groups; -CREATE TABLE user_groups ( - ug_user int NOT NULL REFERENCES useracct (user_id), - ug_group varbinary(16) NOT NULL, - UNIQUE (ug_user,ug_group) +DROP TABLE IF EXISTS user_groups CASCADE; +CREATE TABLE user_groups +( + ug_user int NOT NULL REFERENCES useracct (user_id), + ug_group varbinary(16) NOT NULL, + UNIQUE (ug_user, ug_group) ); CREATE INDEX IDX_UG_GROUP ON user_groups (ug_group); -DROP TABLE IF EXISTS value_backup; -CREATE TABLE value_backup ( - table_name varchar(255) DEFAULT NULL, - maxid int DEFAULT NULL +DROP TABLE IF EXISTS value_backup CASCADE; +CREATE TABLE value_backup +( + table_name varchar(255) DEFAULT NULL, + maxid int DEFAULT NULL ); -DROP TABLE IF EXISTS watchlist; -CREATE TABLE watchlist ( - wl_user int NOT NULL, - wl_namespace int NOT NULL, - wl_title varchar(255) NOT NULL, - wl_notificationtimestamp varchar(14) DEFAULT NULL, - UNIQUE (wl_user,wl_namespace,wl_title) +DROP TABLE IF EXISTS watchlist CASCADE; +CREATE TABLE watchlist +( + wl_user int NOT NULL, + wl_namespace int NOT NULL, + wl_title varchar(255) NOT NULL, + wl_notificationtimestamp varchar(14) DEFAULT NULL, + UNIQUE (wl_user, wl_namespace, wl_title) ); CREATE INDEX IDX_WL_NAMESPACE_TITLE ON watchlist (wl_namespace, wl_title); \ No newline at end of file diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestBenchmarkModule.java b/src/test/java/com/oltpbenchmark/api/AbstractTestBenchmarkModule.java index ff4d5d019..247157ec0 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestBenchmarkModule.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestBenchmarkModule.java @@ -26,12 +26,21 @@ import java.io.InputStream; import java.net.URL; import java.util.Collection; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; public abstract class AbstractTestBenchmarkModule extends AbstractTestCase { - protected static final int NUM_TERMINALS = 10; + + public AbstractTestBenchmarkModule() { + super(false, false); + } + + @Override + public List ignorableTables() { + return null; + } /** * testGetDatabaseDDLPath @@ -59,41 +68,24 @@ public void testCreateDatabase() throws Exception { // Just make sure that there are no empty tables for (Table catalog_tbl : catalog.getTables()) { assert (catalog_tbl.getColumnCount() > 0) : "Missing columns for " + catalog_tbl; -// System.err.println(catalog_tbl); - } // FOR + } } /** * testGetTransactionType */ - public void testGetTransactionType() throws Exception { + public void testGetTransactionType() { int id = 1; - for (Class procClass : this.procClasses) { + for (Class procClass : procedures()) { assertNotNull(procClass); String procName = procClass.getSimpleName(); TransactionType txnType = this.benchmark.initTransactionType(procName, id++, 0, 0); assertNotNull(txnType); assertEquals(procClass, txnType.getProcedureClass()); -// System.err.println(procClass + " -> " + txnType); - } // FOR - } - - /** - * testGetTransactionTypeInvalidId - */ - public void testGetTransactionTypeInvalidId() throws Exception { - Class procClass = this.procClasses.get(0); - assertNotNull(procClass); - String procName = procClass.getSimpleName(); - TransactionType txnType = null; - try { - txnType = this.benchmark.initTransactionType(procName, TransactionType.INVALID_ID, 0, 0); - } catch (Throwable ex) { - // Ignore } - assertNull(txnType); } + /** * testGetSQLDialectPath */ @@ -125,12 +117,10 @@ public void testLoadSQLDialect() throws Exception { String sql = dialects.getSQL(procName, stmtName); assertNotNull(sql); assertFalse(sql.isEmpty()); - // System.err.printf("%s.%s:\n%s\n\n", procName, stmtName, sql); - } // FOR - } // FOR + } + } - // TODO: We should XSD to validate the SQL - } // FOR (dbtype) + } } } @@ -148,9 +138,9 @@ public void testDumpSQLDialect() throws Exception { assertNotNull(dump); assertFalse(dump.isEmpty()); Set benchmarkProcedureNames = this.benchmark.getProcedures().values() - .stream() - .map(Procedure::getProcedureName) - .collect(Collectors.toSet()); + .stream() + .map(Procedure::getProcedureName) + .collect(Collectors.toSet()); for (String procName : dialects.getProcedureNames()) { if (benchmarkProcedureNames.contains(procName)) { assertTrue(procName, dump.contains(procName)); @@ -178,19 +168,19 @@ public void testSetSQLDialect() throws Exception { if (dialects.getProcedureNames().contains(proc.getProcedureName())) { // Need a new proc because the dialect gets loaded in BenchmarkModule::getProcedureName Procedure testProc = ClassUtil.newInstance(proc.getClass().getName(), - new Object[0], new Class[0]); + new Object[0], new Class[0]); assertNotNull(testProc); testProc.initialize(dbType); testProc.loadSQLDialect(dialects); Collection dialectStatementNames = dialects.getStatementNames( - testProc.getProcedureName()); + testProc.getProcedureName()); for (String statementName : dialectStatementNames) { SQLStmt stmt = testProc.getStatements().get(statementName); assertNotNull(stmt); String dialectSQL = dialects.getSQL(testProc.getProcedureName(), - statementName); + statementName); assertEquals(dialectSQL, stmt.getOriginalSQL()); } } @@ -199,14 +189,4 @@ public void testSetSQLDialect() throws Exception { } } - /** - * testMakeWorkers - */ -// public void testMakeWorkers() throws Exception { -// this.workConf.setTerminals(NUM_TERMINALS); -// List workers = this.benchmark.makeWorkers(false); -// assertNotNull(workers); -// assertEquals(NUM_TERMINALS, workers.size()); -// assertNotNull(workers.get(0)); -// } } diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index f78948e4c..502d7e4fe 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -21,14 +21,16 @@ import com.oltpbenchmark.types.DatabaseType; import com.oltpbenchmark.util.ClassUtil; import junit.framework.TestCase; +import org.hsqldb.persist.HsqlProperties; +import org.hsqldb.server.Server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; +import java.io.IOException; import java.sql.Connection; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; -import java.util.Random; public abstract class AbstractTestCase extends TestCase { @@ -40,76 +42,130 @@ public abstract class AbstractTestCase extends TestCa * This is the database type that we will use in our unit tests. * This should always be one of the embedded java databases */ - public static final DatabaseType DB_TYPE = DatabaseType.HSQLDB; - public static final String DB_CONNECTION; - - static { - switch (DB_TYPE) { - case HSQLDB: { - DB_CONNECTION = "jdbc:hsqldb:mem:"; - break; - } - default: { - LOG.warn("Unexpected testing DatabaseType '" + DB_TYPE + "'"); - DB_CONNECTION = null; - } - } // SWITCH + private static final DatabaseType DB_TYPE = DatabaseType.HSQLDB; + private static final String DB_CONNECTION = "jdbc:hsqldb:hsql://localhost:9001/benchbase"; - } // ----------------------------------------------------------------- protected static final double DB_SCALE_FACTOR = 0.01; - protected String dbName; + private Server server = null; + protected WorkloadConfiguration workConf; protected T benchmark; protected AbstractCatalog catalog; protected Connection conn; - protected List> procClasses = new ArrayList>(); - @SuppressWarnings({"rawtypes", "unchecked"}) - protected void setUp(Class clazz, Class... procClasses) throws Exception { - super.setUp(); + protected final boolean createDatabase; + protected final boolean loadDatabase; + + + public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { + this.createDatabase = createDatabase; + this.loadDatabase = loadDatabase; + } + + public abstract HashSet> procedures(); + + public abstract Class benchmarkClass(); + + public abstract List ignorableTables(); + + @Override + protected final void setUp() throws Exception { + HsqlProperties props = new HsqlProperties(); + //props.setProperty("server.remote_open", true); + server = new Server(); + server.setProperties(props); + server.setDatabasePath(0, "mem:benchbase;sql.syntax_mys=true"); + server.setDatabaseName(0, "benchbase"); + server.setAddress("localhost"); + server.setPort(9001); + server.setSilent(true); + server.start(); + this.workConf = new WorkloadConfiguration(); TransactionTypes txnTypes = new TransactionTypes(new ArrayList<>()); - for (int i = 0; i < procClasses.length; i++) { - assertFalse("Duplicate Procedure '" + procClasses[i] + "'", - this.procClasses.contains(procClasses[i])); - this.procClasses.add(procClasses[i]); - TransactionType tt = new TransactionType(procClasses[i], i, false, 0, 0); + + int id = 0; + for (Class procedureClass : procedures()) { + TransactionType tt = new TransactionType(procedureClass, id++, false, 0, 0); txnTypes.add(tt); - } // FOR + } - this.dbName = String.format("%s-%d.db", clazz.getSimpleName(), new Random().nextInt()); this.workConf.setTransTypes(txnTypes); this.workConf.setDatabaseType(DB_TYPE); - this.workConf.setUrl(DB_CONNECTION + this.dbName + ";sql.syntax_mys=true"); + this.workConf.setUrl(DB_CONNECTION); this.workConf.setScaleFactor(DB_SCALE_FACTOR); - this.workConf.setBenchmarkName(BenchmarkModule.convertBenchmarkClassToBenchmarkName(clazz)); + this.workConf.setTerminals(1); + this.workConf.setBatchSize(128); + this.workConf.setBenchmarkName(BenchmarkModule.convertBenchmarkClassToBenchmarkName(benchmarkClass())); - this.benchmark = ClassUtil.newInstance(clazz, + this.benchmark = ClassUtil.newInstance(benchmarkClass(), new Object[]{this.workConf}, new Class[]{WorkloadConfiguration.class}); assertNotNull(this.benchmark); - LOG.debug(DB_TYPE + "::" + this.benchmark + " -> " + this.dbName); + + this.conn = this.benchmark.makeConnection(); + assertNotNull(this.conn); this.benchmark.refreshCatalog(); this.catalog = this.benchmark.getCatalog(); assertNotNull(this.catalog); - this.conn = this.benchmark.makeConnection(); - assertNotNull(this.conn); - assertFalse(this.conn.isReadOnly()); + + if (createDatabase) { + try { + this.benchmark.createDatabase(); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + cleanupServer(); + fail("createDatabase() failed"); + } + } + + if (loadDatabase) { + try { + this.benchmark.loadDatabase(); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + cleanupServer(); + fail("loadDatabase() failed"); + } + } + + try { + postCreateDatabaseSetup(); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + cleanupServer(); + fail("postCreateDatabaseSetup() failed"); + } } + protected void postCreateDatabaseSetup() throws IOException { + + } + + @Override - protected void tearDown() throws Exception { - super.tearDown(); - this.conn.close(); - File f = new File(this.dbName); - if (f.exists()) { - f.delete(); + protected final void tearDown() throws Exception { + + if (this.conn != null) { + this.conn.close(); + } + + cleanupServer(); + } + + private void cleanupServer() { + if (server != null) { + LOG.info("stopping server..."); + server.stop(); + + LOG.info("shutting down server..."); + server.shutdown(); } } } diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestLoader.java b/src/test/java/com/oltpbenchmark/api/AbstractTestLoader.java index 320999aeb..8143e9893 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestLoader.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestLoader.java @@ -24,116 +24,80 @@ import org.slf4j.LoggerFactory; import java.sql.ResultSet; +import java.sql.SQLException; import java.sql.Statement; -import java.util.HashSet; -import java.util.Set; +import java.util.List; public abstract class AbstractTestLoader extends AbstractTestCase { private static final Logger LOG = LoggerFactory.getLogger(AbstractTestLoader.class); + public AbstractTestLoader() { + super(true, false); + } - /** - * These are tables that are not pre-loaded by the benchmark loader - * So we want to ignore them if their count is zero - */ - private final Set ignoreTables = new HashSet(); - - @SuppressWarnings("rawtypes") - protected void setUp(Class clazz, String[] ignoreTables, Class... procClasses) throws Exception { - super.setUp(clazz, procClasses); - - if (ignoreTables != null) { - for (String t : ignoreTables) { - this.ignoreTables.add(t.toUpperCase()); - } // FOR - } - - this.workConf.setScaleFactor(.001); - this.workConf.setTerminals(1); - this.workConf.setBatchSize(128); - - this.benchmark.createDatabase(); - this.benchmark.getProcedures(); + @Override + public List ignorableTables() { + return null; } /** * testLoad */ public void testLoad() throws Exception { - Statement stmt = conn.createStatement(); - ResultSet result = null; - // All we really can do here is just invoke the loader - // and then check to make sure that our tables aren't empty this.benchmark.loadDatabase(); - assertFalse("Failed to get table names for " + benchmark.getBenchmarkName().toUpperCase(), - this.catalog.getTables().isEmpty()); - - LOG.debug("Computing the size of the tables"); - Histogram tableSizes = new Histogram(true); - for (Table table : this.catalog.getTables()) { - String tableName = table.getName(); - if (this.ignoreTables.contains(tableName.toUpperCase())) continue; - Table catalog_tbl = this.catalog.getTable(tableName); - String sql = SQLUtil.getCountSQL(this.workConf.getDatabaseType(), catalog_tbl); - result = stmt.executeQuery(sql); - assertNotNull(result); - boolean adv = result.next(); - assertTrue(sql, adv); - int count = result.getInt(1); - result.close(); - LOG.debug(sql + " => " + count); - tableSizes.put(tableName, count); - } // FOR - LOG.debug("=== TABLE SIZES ===\n" + tableSizes); - assertFalse("Unable to compute the tables size for " + benchmark.getBenchmarkName().toUpperCase(), - tableSizes.isEmpty()); - - for (String tableName : tableSizes.values()) { - long count = tableSizes.get(tableName); - assert (count > 0) : "No tuples were inserted for table " + tableName; - } // FOR + validateLoad(); } - public Loader testLoadWithReturn() throws Exception { - Loader loader; - Statement stmt = conn.createStatement(); - ResultSet result = null; + private void validateLoad() throws SQLException { + assertFalse("Failed to get table names for " + benchmark.getBenchmarkName().toUpperCase(), this.catalog.getTables().isEmpty()); - // All we really can do here is just invoke the loader - // and then check to make sure that our tables aren't empty - loader = this.benchmark.loadDatabase(); - assertFalse("Failed to get table names for " + benchmark.getBenchmarkName().toUpperCase(), - this.catalog.getTables().isEmpty()); LOG.debug("Computing the size of the tables"); Histogram tableSizes = new Histogram(true); + for (Table table : this.catalog.getTables()) { String tableName = table.getName(); - if (this.ignoreTables.contains(tableName.toUpperCase())) continue; Table catalog_tbl = this.catalog.getTable(tableName); String sql = SQLUtil.getCountSQL(this.workConf.getDatabaseType(), catalog_tbl); - result = stmt.executeQuery(sql); - assertNotNull(result); - boolean adv = result.next(); - assertTrue(sql, adv); - int count = result.getInt(1); - result.close(); - LOG.debug(sql + " => " + count); - tableSizes.put(tableName, count); - } // FOR + + try (Statement stmt = conn.createStatement(); + ResultSet result = stmt.executeQuery(sql);) { + + assertNotNull(result); + + boolean adv = result.next(); + assertTrue(sql, adv); + + int count = result.getInt(1); + LOG.debug(sql + " => " + count); + tableSizes.put(tableName, count); + } + } + LOG.debug("=== TABLE SIZES ===\n" + tableSizes); - assertFalse("Unable to compute the tables size for " + benchmark.getBenchmarkName().toUpperCase(), - tableSizes.isEmpty()); + assertFalse("Unable to compute the tables size for " + benchmark.getBenchmarkName().toUpperCase(), tableSizes.isEmpty()); for (String tableName : tableSizes.values()) { long count = tableSizes.get(tableName); + + if (ignorableTables() != null && ignorableTables().stream().anyMatch(tableName::equalsIgnoreCase)) { + continue; + } + assert (count > 0) : "No tuples were inserted for table " + tableName; - } // FOR + } + } + + public Loader testLoadWithReturn() throws Exception { + Loader loader = this.benchmark.loadDatabase(); + + validateLoad(); + return loader; } } diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java b/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java index 4a939bbe9..4b87b315f 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java @@ -19,8 +19,7 @@ import com.oltpbenchmark.api.Procedure.UserAbortException; -import java.sql.Connection; -import java.util.ArrayList; +import java.io.IOException; import java.util.List; public abstract class AbstractTestWorker extends AbstractTestCase { @@ -29,24 +28,17 @@ public abstract class AbstractTestWorker extends Abst protected List> workers; - @SuppressWarnings("rawtypes") - protected void setUp(Class clazz, Class... procClasses) throws Exception { - super.setUp(clazz, procClasses); + public AbstractTestWorker() { + super(true, true); + } - List txnList = new ArrayList(); - int id = 1; - for (Class procClass : this.procClasses) { - assertNotNull(procClass); - String procName = procClass.getSimpleName(); - TransactionType txnType = this.benchmark.initTransactionType(procName, id++, 0, 0); - assertNotNull(txnType); - assertEquals(procClass, txnType.getProcedureClass()); - txnList.add(txnType); - } // FOR - TransactionTypes txnTypes = new TransactionTypes(txnList); - this.workConf.setTransTypes(txnTypes); - this.workConf.setBatchSize(128); - this.workConf.setTerminals(NUM_TERMINALS); + @Override + public List ignorableTables() { + return null; + } + + @Override + protected void postCreateDatabaseSetup() throws IOException { this.workers = this.benchmark.makeWorkers(); assertNotNull(this.workers); assertEquals(NUM_TERMINALS, this.workers.size()); @@ -55,11 +47,11 @@ protected void setUp(Class clazz, Class... procClasses) throws Exception { /** * testGetProcedure */ - public void testGetProcedure() throws Exception { + public void testGetProcedure() { // Make sure that we can get a Procedure handle for each TransactionType Worker w = workers.get(0); assertNotNull(w); - for (Class procClass : this.procClasses) { + for (Class procClass : this.procedures()) { assertNotNull(procClass); Procedure proc = w.getProcedure(procClass); assertNotNull("Failed to get procedure " + procClass.getSimpleName(), proc); @@ -71,9 +63,6 @@ public void testGetProcedure() throws Exception { * testExecuteWork */ public void testExecuteWork() throws Exception { - this.benchmark.createDatabase(); - this.benchmark.loadDatabase(); - this.conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); Worker w = workers.get(0); assertNotNull(w); diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java index 282ab75f4..58c473bff 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java @@ -23,12 +23,14 @@ import com.oltpbenchmark.benchmarks.auctionmark.procedures.*; import com.oltpbenchmark.benchmarks.auctionmark.util.CategoryParser; +import java.io.IOException; +import java.util.HashSet; +import java.util.List; import java.util.Map; public class TestAuctionMarkBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { - GetItem.class, + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of(GetItem.class, GetUserInfo.class, NewBid.class, NewComment.class, @@ -36,12 +38,21 @@ public class TestAuctionMarkBenchmark extends AbstractTestBenchmarkModule> procedures() { + return PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return AuctionMarkBenchmark.class; + } + + @Override + protected void postCreateDatabaseSetup() throws IOException { + super.postCreateDatabaseSetup(); AuctionMarkProfile.clearCachedProfile(); } @@ -62,5 +73,4 @@ public void testSupplementalClasses() throws Exception { Map procs = this.benchmark.getProcedures(); assertNotNull(procs); } - } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java index 152ce301d..742cc269c 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java @@ -17,6 +17,7 @@ package com.oltpbenchmark.benchmarks.auctionmark; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.api.Worker; import com.oltpbenchmark.benchmarks.auctionmark.util.ItemInfo; import com.oltpbenchmark.util.Histogram; @@ -29,14 +30,14 @@ public class TestAuctionMarkLoader extends AbstractTestLoader { - private static String IGNORE[] = { -// AuctionMarkConstants.TABLENAME_CONFIG_PROFILE, - }; + @Override + public HashSet> procedures() { + return TestAuctionMarkBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(AuctionMarkBenchmark.class, IGNORE, TestAuctionMarkBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.1); + public Class benchmarkClass() { + return AuctionMarkBenchmark.class; } /** diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java index d7566f1d7..5ea4ff51d 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java @@ -17,9 +17,11 @@ package com.oltpbenchmark.benchmarks.auctionmark; import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.api.Worker; import com.oltpbenchmark.benchmarks.auctionmark.util.UserId; +import java.io.IOException; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; @@ -27,9 +29,18 @@ public class TestAuctionMarkWorker extends AbstractTestWorker { @Override - protected void setUp() throws Exception { - super.setUp(AuctionMarkBenchmark.class, TestAuctionMarkBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.1); + public HashSet> procedures() { + return TestAuctionMarkBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return AuctionMarkBenchmark.class; + } + + @Override + protected void postCreateDatabaseSetup() throws IOException { + super.postCreateDatabaseSetup(); AuctionMarkProfile.clearCachedProfile(); AuctionMarkConstants.CLOSE_AUCTIONS_ENABLE = false; } @@ -38,18 +49,6 @@ protected void setUp() throws Exception { * testUniqueSellers */ public void testUniqueSellers() throws Exception { - int num_workers = 2; - this.workConf.setScaleFactor(0.1); - this.workConf.setTerminals(num_workers); - this.benchmark.createDatabase(); - this.benchmark.loadDatabase(); - - // Make a bunch of workers and then loop through all of them to - // make sure that they don't generate a seller id that was - // generated from another worker - this.workers = this.benchmark.makeWorkers(); - assertNotNull(this.workers); - assertEquals(num_workers, this.workers.size()); Set all_users = new HashSet(); Set worker_users = new TreeSet(); diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java index 65d6ab0e3..71f1adcdd 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java @@ -17,11 +17,15 @@ package com.oltpbenchmark.benchmarks.chbenchmark; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.chbenchmark.queries.*; +import java.util.HashSet; +import java.util.List; + public class TestCHBenCHmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( Q1.class, Q2.class, Q3.class, @@ -43,12 +47,16 @@ public class TestCHBenCHmark extends AbstractTestBenchmarkModule { Q19.class, Q20.class, Q21.class, - Q22.class, - }; + Q22.class)); + + @Override + public HashSet> procedures() { + return TestCHBenCHmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(CHBenCHmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return CHBenCHmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java new file mode 100644 index 000000000..9fc8ce29e --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java @@ -0,0 +1,36 @@ +/****************************************************************************** + * Copyright 2015 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +package com.oltpbenchmark.benchmarks.chbenchmark; + +import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestCHBenCHmarkLoader extends AbstractTestLoader { + + @Override + public HashSet> procedures() { + return TestCHBenCHmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return CHBenCHmark.class; + } + +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java new file mode 100644 index 000000000..c4e87f0a4 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java @@ -0,0 +1,36 @@ +/****************************************************************************** + * Copyright 2015 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +package com.oltpbenchmark.benchmarks.chbenchmark; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestCHBenCHmarkWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestCHBenCHmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return CHBenCHmark.class; + } + +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java index 9ffc2105c..f08943c8b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java @@ -18,11 +18,15 @@ package com.oltpbenchmark.benchmarks.epinions; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.epinions.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestEpinionsBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( GetAverageRatingByTrustedUser.class, GetItemAverageRating.class, GetItemReviewsByTrustedUser.class, @@ -31,11 +35,16 @@ public class TestEpinionsBenchmark extends AbstractTestBenchmarkModule> procedures() { + return TestEpinionsBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(EpinionsBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return EpinionsBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/api/MockBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java similarity index 52% rename from src/test/java/com/oltpbenchmark/api/MockBenchmark.java rename to src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java index 36b1686ac..55e384920 100644 --- a/src/test/java/com/oltpbenchmark/api/MockBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java @@ -14,45 +14,29 @@ * limitations under the License. * ******************************************************************************/ -package com.oltpbenchmark.api; -import com.oltpbenchmark.WorkloadConfiguration; -import com.oltpbenchmark.types.DatabaseType; +package com.oltpbenchmark.benchmarks.epinions; -import java.io.File; -import java.io.IOException; -import java.net.URL; +import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; import java.util.List; -public class MockBenchmark extends BenchmarkModule { - public MockBenchmark() { - super(new WorkloadConfiguration()); - } +public class TestEpinionsLoader extends AbstractTestLoader { @Override - protected Package getProcedurePackageImpl() { - // TODO Auto-generated method stub - return null; + public HashSet> procedures() { + return TestEpinionsBenchmark.PROCEDURE_CLASSES; } @Override - protected Loader makeLoaderImpl() { - // TODO Auto-generated method stub - return null; + public Class benchmarkClass() { + return EpinionsBenchmark.class; } @Override - protected List> makeWorkersImpl() throws IOException { - // TODO Auto-generated method stub - return null; - } - - public URL getDatabaseDDL(DatabaseType db_type) { - // Get our sample DDL file - URL testDDLURL = MockBenchmark.class.getResource("test-ddl.sql"); - assert (testDDLURL != null) : "Unable to get " + MockBenchmark.class.getSimpleName() + " DDL file"; - File testDDL = new File(testDDLURL.getPath()); - assert (testDDL.exists()) : testDDL.getAbsolutePath(); - return (testDDLURL); + public List ignorableTables() { + return List.of("review_rating"); } -} // END CLASS \ No newline at end of file +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java new file mode 100644 index 000000000..4a829eb77 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java @@ -0,0 +1,37 @@ +/****************************************************************************** + * Copyright 2015 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + + +package com.oltpbenchmark.benchmarks.epinions; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestEpinionsWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestEpinionsBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return EpinionsBenchmark.class; + } + +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java index d3fcb0591..3223cc43e 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java @@ -17,17 +17,26 @@ package com.oltpbenchmark.benchmarks.noop; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.noop.procedures.NoOp; +import java.util.HashSet; +import java.util.List; + public class TestNoOpBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { - NoOp.class, - }; + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + NoOp.class + )); + + @Override + public HashSet> procedures() { + return TestNoOpBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(NoOpBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return NoOpBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java new file mode 100644 index 000000000..654705067 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java @@ -0,0 +1,41 @@ +/****************************************************************************** + * Copyright 2016 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +package com.oltpbenchmark.benchmarks.noop; + +import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; +import java.util.List; + +public class TestNoOpLoader extends AbstractTestLoader { + + @Override + public HashSet> procedures() { + return TestNoOpBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return NoOpBenchmark.class; + } + + @Override + public List ignorableTables() { + return List.of("FAKE"); + } +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java new file mode 100644 index 000000000..b83cc2df3 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java @@ -0,0 +1,36 @@ +/****************************************************************************** + * Copyright 2016 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +package com.oltpbenchmark.benchmarks.noop; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestNoOpWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestNoOpBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return NoOpBenchmark.class; + } + +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java index 2c2037f36..083c08232 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java @@ -18,22 +18,31 @@ package com.oltpbenchmark.benchmarks.resourcestresser; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.resourcestresser.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestResourceStresserBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( Contention1.class, Contention2.class, CPU1.class, CPU2.class, IO1.class, - IO2.class, - }; + IO2.class + )); + + @Override + public HashSet> procedures() { + return TestResourceStresserBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(ResourceStresserBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return ResourceStresserBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java new file mode 100644 index 000000000..5c325813c --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.resourcestresser; + +import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestResourceStresserLoader extends AbstractTestLoader { + + @Override + public HashSet> procedures() { + return TestResourceStresserBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return ResourceStresserBenchmark.class; + } +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java new file mode 100644 index 000000000..428f110ce --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.resourcestresser; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestResourceStresserWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestResourceStresserBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return ResourceStresserBenchmark.class; + } +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java index 61da220ed..0a6ffe266 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java @@ -18,28 +18,36 @@ package com.oltpbenchmark.benchmarks.seats; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.seats.procedures.*; import com.oltpbenchmark.catalog.Table; import java.io.InputStream; +import java.util.HashSet; +import java.util.List; public class TestSEATSBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( DeleteReservation.class, FindFlights.class, FindOpenSeats.class, NewReservation.class, UpdateCustomer.class, UpdateReservation.class - }; + )); @Override - protected void setUp() throws Exception { - super.setUp(SEATSBenchmark.class, PROC_CLASSES); - SEATSProfile.clearCachedProfile(); + public HashSet> procedures() { + return TestSEATSBenchmark.PROCEDURE_CLASSES; } + @Override + public Class benchmarkClass() { + return SEATSBenchmark.class; + } + + /** * testGetDataDir */ diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java index 34fd2665a..14b85e222 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java @@ -17,17 +17,23 @@ package com.oltpbenchmark.benchmarks.seats; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.api.Worker; import com.oltpbenchmark.util.RandomGenerator; +import java.util.HashSet; import java.util.List; public class TestSEATSLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(SEATSBenchmark.class, null, TestSEATSBenchmark.PROC_CLASSES); - SEATSProfile.clearCachedProfile(); + public HashSet> procedures() { + return TestSEATSBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return SEATSBenchmark.class; } /** diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java index 18bbbee63..b98915743 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java @@ -17,14 +17,20 @@ package com.oltpbenchmark.benchmarks.seats; import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestSEATSWorker extends AbstractTestWorker { @Override - protected void setUp() throws Exception { - super.setUp(SEATSBenchmark.class, TestSEATSBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.01); - SEATSProfile.clearCachedProfile(); + public HashSet> procedures() { + return TestSEATSBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return SEATSBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java index 76e51d768..baf90387c 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java @@ -18,22 +18,31 @@ package com.oltpbenchmark.benchmarks.smallbank; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.smallbank.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestSmallBankBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( Amalgamate.class, Balance.class, DepositChecking.class, SendPayment.class, TransactSavings.class, - WriteCheck.class, - }; + WriteCheck.class + )); + + @Override + public HashSet> procedures() { + return TestSmallBankBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(SmallBankBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return SmallBankBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java index 0462547c1..98f232c9d 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java @@ -17,13 +17,20 @@ package com.oltpbenchmark.benchmarks.smallbank; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestSmallBankLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(SmallBankBenchmark.class, null, TestSmallBankBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.0001); + public HashSet> procedures() { + return TestSmallBankBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return SmallBankBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java index 3735af4a0..93a90b663 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java @@ -17,11 +17,19 @@ package com.oltpbenchmark.benchmarks.smallbank; import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestSmallBankWorker extends AbstractTestWorker { @Override - protected void setUp() throws Exception { - super.setUp(SmallBankBenchmark.class, TestSmallBankBenchmark.PROC_CLASSES); + public HashSet> procedures() { + return TestSmallBankBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return SmallBankBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java index 491c874e9..83f609ff3 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java @@ -18,23 +18,32 @@ package com.oltpbenchmark.benchmarks.tatp; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tatp.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestTATPBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( DeleteCallForwarding.class, GetAccessData.class, GetNewDestination.class, GetSubscriberData.class, InsertCallForwarding.class, UpdateLocation.class, - UpdateSubscriberData.class, - }; + UpdateSubscriberData.class + )); + + @Override + public HashSet> procedures() { + return TestTATPBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(TATPBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return TATPBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java index 59353d0ac..0203f48cb 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java @@ -17,13 +17,20 @@ package com.oltpbenchmark.benchmarks.tatp; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestTATPLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(TATPBenchmark.class, null, TestTATPBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.0001); + public HashSet> procedures() { + return TestTATPBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TATPBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java index f680a3a01..3f5869dbe 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java @@ -17,11 +17,19 @@ package com.oltpbenchmark.benchmarks.tatp; import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestTATPWorker extends AbstractTestWorker { @Override - protected void setUp() throws Exception { - super.setUp(TATPBenchmark.class, TestTATPBenchmark.PROC_CLASSES); + public HashSet> procedures() { + return TestTATPBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TATPBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java index cabeff57d..96b0507a0 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java @@ -18,21 +18,30 @@ package com.oltpbenchmark.benchmarks.tpcc; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tpcc.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestTPCCBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( Delivery.class, NewOrder.class, OrderStatus.class, Payment.class, - StockLevel.class, - }; + StockLevel.class + )); + + @Override + public HashSet> procedures() { + return TestTPCCBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(TPCCBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return TPCCBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java index ee2899be9..233199df4 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java @@ -17,13 +17,20 @@ package com.oltpbenchmark.benchmarks.tpcc; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestTPCCLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(TPCCBenchmark.class, null, TestTPCCBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.1); + public HashSet> procedures() { + return TestTPCCBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TPCCBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java new file mode 100644 index 000000000..29c7b1fe4 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java @@ -0,0 +1,20 @@ +package com.oltpbenchmark.benchmarks.tpcc; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestTPCCWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestTPCCBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TPCCBenchmark.class; + } + +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java index f8be596c9..362f0e805 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java @@ -18,38 +18,46 @@ package com.oltpbenchmark.benchmarks.tpch; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tpch.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestTPCHBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { - Q1.class, - Q2.class, - Q3.class, - Q4.class, - Q5.class, - Q6.class, - Q7.class, - Q8.class, - Q9.class, - Q10.class, - Q11.class, - Q12.class, - Q13.class, - Q14.class, - Q15.class, - Q16.class, - Q17.class, - Q18.class, - Q19.class, - Q20.class, - Q21.class, - Q22.class, - }; + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + Q1.class, + Q2.class, + Q3.class, + Q4.class, + Q5.class, + Q6.class, + Q7.class, + Q8.class, + Q9.class, + Q10.class, + Q11.class, + Q12.class, + Q13.class, + Q14.class, + Q15.class, + Q16.class, + Q17.class, + Q18.class, + Q19.class, + Q20.class, + Q21.class, + Q22.class)); + + @Override + public HashSet> procedures() { + return TestTPCHBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(TPCHBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return TPCHBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java index 5dea2fbb8..24f152d0a 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java @@ -17,13 +17,20 @@ package com.oltpbenchmark.benchmarks.tpch; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestTPCHLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(TPCHBenchmark.class, null, TestTPCHBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.01); + public HashSet> procedures() { + return TestTPCHBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TPCHBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java new file mode 100644 index 000000000..7725ee1cb --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.tpch; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestTPCHWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestTPCHBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TPCHBenchmark.class; + } +} \ No newline at end of file diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java index 86f262347..6373fa653 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java @@ -18,23 +18,31 @@ package com.oltpbenchmark.benchmarks.twitter; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.twitter.procedures.GetFollowers; import com.oltpbenchmark.benchmarks.twitter.procedures.GetTweet; import com.oltpbenchmark.benchmarks.twitter.procedures.GetTweetsFromFollowing; import com.oltpbenchmark.benchmarks.twitter.procedures.InsertTweet; +import java.util.HashSet; +import java.util.List; + public class TestTwitterBenchmark extends AbstractTestBenchmarkModule { - protected static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( GetFollowers.class, GetTweet.class, GetTweetsFromFollowing.class, InsertTweet.class - }; + )); @Override - protected void setUp() throws Exception { - super.setUp(TwitterBenchmark.class, PROC_CLASSES); + public HashSet> procedures() { + return TestTwitterBenchmark.PROCEDURE_CLASSES; } + @Override + public Class benchmarkClass() { + return TwitterBenchmark.class; + } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java index 5c61656dd..7b618bfb0 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java @@ -17,6 +17,10 @@ package com.oltpbenchmark.benchmarks.twitter; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; +import java.util.List; public class TestTwitterLoader extends AbstractTestLoader { @@ -25,9 +29,18 @@ public class TestTwitterLoader extends AbstractTestLoader { }; @Override - protected void setUp() throws Exception { - super.setUp(TwitterBenchmark.class, IGNORED_TABLES, TestTwitterBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.1); + public HashSet> procedures() { + return TestTwitterBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TwitterBenchmark.class; + } + + @Override + public List ignorableTables() { + return List.of(IGNORED_TABLES); } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java new file mode 100644 index 000000000..2faf20e37 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.twitter; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestTwitterWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestTwitterBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return TwitterBenchmark.class; + } +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java index 25f0e806e..a4fba7ef2 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java @@ -17,17 +17,26 @@ package com.oltpbenchmark.benchmarks.voter; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.voter.procedures.Vote; +import java.util.HashSet; +import java.util.List; + public class TestVoterBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { - Vote.class, - }; + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + Vote.class + )); + + @Override + public HashSet> procedures() { + return TestVoterBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(VoterBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return VoterBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java index 30fd7c5d3..1a1bcae09 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java @@ -17,6 +17,10 @@ package com.oltpbenchmark.benchmarks.voter; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; +import java.util.List; public class TestVoterLoader extends AbstractTestLoader { @@ -25,9 +29,18 @@ public class TestVoterLoader extends AbstractTestLoader { }; @Override - protected void setUp() throws Exception { - super.setUp(VoterBenchmark.class, IGNORE, TestVoterBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.0001); + public HashSet> procedures() { + return TestVoterBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return VoterBenchmark.class; + } + + @Override + public List ignorableTables() { + return List.of(IGNORE); } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java index fa0c1cd4b..b27019d29 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java @@ -17,11 +17,19 @@ package com.oltpbenchmark.benchmarks.voter; import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestVoterWorker extends AbstractTestWorker { @Override - protected void setUp() throws Exception { - super.setUp(VoterBenchmark.class, TestVoterBenchmark.PROC_CLASSES); + public HashSet> procedures() { + return TestVoterBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return VoterBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java index 118b4a5b6..d6ede4b35 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java @@ -18,21 +18,30 @@ package com.oltpbenchmark.benchmarks.wikipedia; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.wikipedia.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestWikipediaBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( AddWatchList.class, GetPageAnonymous.class, GetPageAuthenticated.class, RemoveWatchList.class, - UpdatePage.class, - }; + UpdatePage.class + )); + + @Override + public HashSet> procedures() { + return TestWikipediaBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(WikipediaBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return WikipediaBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java index a948bfccd..16362197b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java @@ -17,6 +17,10 @@ package com.oltpbenchmark.benchmarks.wikipedia; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; +import java.util.List; public class TestWikipediaLoader extends AbstractTestLoader { @@ -33,32 +37,17 @@ public class TestWikipediaLoader extends AbstractTestLoader }; @Override - protected void setUp() throws Exception { - super.setUp(WikipediaBenchmark.class, IGNORE, TestWikipediaBenchmark.PROC_CLASSES); - this.workConf.setScaleFactor(0.1); + public HashSet> procedures() { + return TestWikipediaBenchmark.PROCEDURE_CLASSES; } -// public void testHistograms() throws Exception { -// Collection values = RevisionHistograms.REVISION_DELTA.values(); -// Histogram new_h = new Histogram(); -// for (Integer v : values) { -// Integer cnt = RevisionHistograms.REVISION_DELTA.get(v); -// if (Math.abs(v) >= 100000) { -// int new_v = (int)Math.round(v / 10000.0d) * 10000; -// new_h.put(new_v, cnt); -// } -// else if (Math.abs(v) >= 10000) { -// int new_v = (int)Math.round(v / 1000.0d) * 1000; -// new_h.put(new_v, cnt); -// } -// else { -// new_h.put(v, cnt); -// } -// } -// for (Integer v : new_h.values()) { -// Integer cnt = new_h.get(v); -// System.err.printf("this.put(%d, %d);\n", v, cnt); -// } -// } + @Override + public Class benchmarkClass() { + return WikipediaBenchmark.class; + } + @Override + public List ignorableTables() { + return List.of(IGNORE); + } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java new file mode 100644 index 000000000..e07b859d7 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.wikipedia; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestWikipediaWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestWikipediaBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return WikipediaBenchmark.class; + } +} diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java index cf7465c60..4b2af286c 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java @@ -18,22 +18,31 @@ package com.oltpbenchmark.benchmarks.ycsb; import com.oltpbenchmark.api.AbstractTestBenchmarkModule; +import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.ycsb.procedures.*; +import java.util.HashSet; +import java.util.List; + public class TestYCSBBenchmark extends AbstractTestBenchmarkModule { - public static final Class[] PROC_CLASSES = { + public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( DeleteRecord.class, InsertRecord.class, ReadModifyWriteRecord.class, ReadRecord.class, ScanRecord.class, - UpdateRecord.class, - }; + UpdateRecord.class + )); + + @Override + public HashSet> procedures() { + return TestYCSBBenchmark.PROCEDURE_CLASSES; + } @Override - protected void setUp() throws Exception { - super.setUp(YCSBBenchmark.class, PROC_CLASSES); + public Class benchmarkClass() { + return YCSBBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java index 722ba53d5..e1e57b0a7 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java @@ -17,12 +17,20 @@ package com.oltpbenchmark.benchmarks.ycsb; import com.oltpbenchmark.api.AbstractTestLoader; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; public class TestYCSBLoader extends AbstractTestLoader { @Override - protected void setUp() throws Exception { - super.setUp(YCSBBenchmark.class, null, TestYCSBBenchmark.PROC_CLASSES); + public HashSet> procedures() { + return TestYCSBBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return YCSBBenchmark.class; } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java new file mode 100644 index 000000000..5edc5330e --- /dev/null +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java @@ -0,0 +1,19 @@ +package com.oltpbenchmark.benchmarks.ycsb; + +import com.oltpbenchmark.api.AbstractTestWorker; +import com.oltpbenchmark.api.Procedure; + +import java.util.HashSet; + +public class TestYCSBWorker extends AbstractTestWorker { + + @Override + public HashSet> procedures() { + return TestYCSBBenchmark.PROCEDURE_CLASSES; + } + + @Override + public Class benchmarkClass() { + return YCSBBenchmark.class; + } +} diff --git a/src/test/java/com/oltpbenchmark/util/TestTableDataIterable.java b/src/test/java/com/oltpbenchmark/util/TestTableDataIterable.java deleted file mode 100644 index 16f7d1ca5..000000000 --- a/src/test/java/com/oltpbenchmark/util/TestTableDataIterable.java +++ /dev/null @@ -1,79 +0,0 @@ -/****************************************************************************** - * Copyright 2015 by OLTPBenchmark Project * - * * - * Licensed under the Apache License, Version 2.0 (the "License"); * - * you may not use this file except in compliance with the License. * - * You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - ******************************************************************************/ - -package com.oltpbenchmark.util; - -import com.oltpbenchmark.api.AbstractTestCase; -import com.oltpbenchmark.benchmarks.seats.SEATSBenchmark; -import com.oltpbenchmark.catalog.AbstractCatalog; -import com.oltpbenchmark.catalog.HSQLDBCatalog; -import com.oltpbenchmark.catalog.Table; -import org.junit.Test; - -import java.util.Arrays; - -/** - * TestTableDataIterable - * - * @author pavlo - */ -public class TestTableDataIterable extends AbstractTestCase { - - Table catalog_tbl; - - @Override - protected void setUp() throws Exception { - super.setUp(SEATSBenchmark.class); - - AbstractCatalog catalog = new HSQLDBCatalog(this.benchmark); - assertNotNull(catalog); - this.catalog_tbl = catalog.getTable("AIRLINE"); - assertNotNull(catalog.toString(), this.catalog_tbl); - assertFalse(this.catalog_tbl.getColumnCount() == 0); - } - - /** - * testLoadFile - */ - @Test - public void testLoadFile() throws Exception { - String catalogTablePath = SEATSBenchmark.getTableDataFilePath(benchmark.getDataDir(), catalog_tbl); - - TableDataIterable iterable = new TableDataIterable(this.catalog_tbl, catalogTablePath, true, true); - int num_cols = -1; - int num_rows = 0; - for (Object[] row : iterable) { - if (num_cols != -1) { - assertEquals(num_cols, row.length); - } else { -// System.err.println("NUM OF COLS: " + row.length); - } - - assertEquals(this.catalog_tbl.getColumnCount(), row.length); - for (int i = 0; i < num_cols; i++) { - // The first two columns cannot be null - if (i < 2) - assertNotNull(String.format("Row:%d, Col:%d\n%s", num_rows, i, Arrays.toString(row)), row[i]); - } // FOR - - num_cols = row.length; - num_rows++; - } // FOR - assertTrue(num_rows > 0); - - } - -} diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 9e7f04e06..1c3ea8f6c 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -7,7 +7,10 @@ log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%-5p] %d [%t] %x %c %M - %m%n -log4j.logger.com.oltpbenchmark=INFO +log4j.logger.com.oltpbenchmark=DEBUG +log4j.logger.org.hsqldb=DEBUG +log4j.logger.com.oltpbenchmark.benchmarks.twitter=TRACE +log4j.logger.com.oltpbenchmark.util.ThreadUtil=TRACE ## to see UserAbortException messages set this logger to DEBUG log4j.logger.com.oltpbenchmark.api.ABORT_LOG=WARN From c434f12934c158387e9a1f7581fba82d21fd38a8 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Mon, 28 Mar 2022 11:36:27 -0400 Subject: [PATCH 02/15] working on resourcestresser and tpch --- .../procedures/Contention2.java | 2 +- .../resourcestresser/procedures/IO1.java | 2 +- .../resourcestresser/dialect-hsqldb.xml | 25 +++++++ .../benchmarks/tpch/dialect-hsqldb.xml | 69 +++++++++++++++++++ .../chbenchmark/TestCHBenCHmark.java | 2 + .../chbenchmark/TestCHBenCHmarkLoader.java | 2 + .../chbenchmark/TestCHBenCHmarkWorker.java | 2 + 7 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/benchmarks/resourcestresser/dialect-hsqldb.xml create mode 100644 src/main/resources/benchmarks/tpch/dialect-hsqldb.xml diff --git a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/Contention2.java b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/Contention2.java index 0a78fc03d..070f833d3 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/Contention2.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/Contention2.java @@ -42,7 +42,7 @@ public void run(Connection conn, int howManyKeys, int howManyUpdates, int sleepL for (int sel = 0; sel < howManyUpdates; ++sel) { - int leftKey = ResourceStresserWorker.gen.nextInt(numKeys - howManyKeys); + int leftKey = ResourceStresserWorker.gen.nextInt(Math.max(1, numKeys - howManyKeys)); int rightKey = leftKey + howManyKeys; int salary = ResourceStresserWorker.gen.nextInt(); diff --git a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/IO1.java b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/IO1.java index a3abd6d0c..cb35a8002 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/IO1.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/resourcestresser/procedures/IO1.java @@ -49,7 +49,7 @@ public void run(Connection conn, int myId, int howManyColsPerRow, int howManyUpd int startingKey = myId * keyRange; for (int up = 0; up < howManyUpdatesPerTransaction; ++up) { - int leftKey = ResourceStresserWorker.gen.nextInt(keyRange - howManyRowsPerUpdate) + startingKey; + int leftKey = ResourceStresserWorker.gen.nextInt(Math.max(1, keyRange - howManyRowsPerUpdate)) + startingKey; int rightKey = leftKey + howManyRowsPerUpdate; try (PreparedStatement stmt = this.getPreparedStatement(conn, ioUpdate)) { diff --git a/src/main/resources/benchmarks/resourcestresser/dialect-hsqldb.xml b/src/main/resources/benchmarks/resourcestresser/dialect-hsqldb.xml new file mode 100644 index 000000000..de9fdc7fe --- /dev/null +++ b/src/main/resources/benchmarks/resourcestresser/dialect-hsqldb.xml @@ -0,0 +1,25 @@ + + + + + + = 0 AND empid < 100) AS T1]]> + + + + + = 0 AND empid < 100) AS T2]]> + + + + + select 1 from locktable where empid = ? + + + + + select 1 from locktable where empid = ? + + + + diff --git a/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml b/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml new file mode 100644 index 000000000..3d129cdaf --- /dev/null +++ b/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + = cast(? as date) and o_orderdate < cast(? as date) + interval '3' month and exists ( select * from lineitem where l_orderkey = o_orderkey and l_commitdate < l_receiptdate ) group by o_orderpriority order by o_orderpriority + ]]> + + + + + = cast(? as date) and o_orderdate < cast(? as date) + interval '1' year group by n_name order by revenue desc + ]]> + + + + + = cast(? as date) and l_shipdate < cast(? as date) + interval '1' year and l_discount between ? - 0.01 and ? + 0.01 and l_quantity < ? + ]]> + + + + + = cast(? as date) and o_orderdate < cast(? as date) + interval '3' month and l_returnflag = 'R' and c_nationkey = n_nationkey group by c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment order by revenue desc limit 20 + ]]> + + + + + '1-URGENT' and o_orderpriority <> '2-HIGH' then 1 else 0 end) as low_line_count fromorders,lineitem where o_orderkey = l_orderkey and l_shipmode in (?, ?) and l_commitdate < l_receiptdate and l_shipdate < l_commitdate and l_receiptdate >= cast(? as date) and l_receiptdate < cast(? as date) + interval '1' year group by l_shipmode order by l_shipmode + ]]> + + + + + = cast(? as date) and l_shipdate < cast(? as date) + interval '1' month + ]]> + + + + + = cast(? as date) and l_shipdate < cast(? as date) + interval '3' month group by l_suppkey + ]]> + + + + + ( select 0.5 * sum(l_quantity) from lineitem where l_partkey = ps_partkey and l_suppkey = ps_suppkey and l_shipdate >= cast(? as date) and l_shipdate < cast(? as date) + interval '1' year ) ) and s_nationkey = n_nationkey and n_name = ? order by s_name + ]]> + + + + diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java index 71f1adcdd..49b8f981b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java @@ -19,10 +19,12 @@ import com.oltpbenchmark.api.AbstractTestBenchmarkModule; import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.chbenchmark.queries.*; +import org.junit.Ignore; import java.util.HashSet; import java.util.List; +@Ignore("the testcase is under development") public class TestCHBenCHmark extends AbstractTestBenchmarkModule { public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java index 9fc8ce29e..9d3ca8fc8 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java @@ -18,9 +18,11 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; +import org.junit.Ignore; import java.util.HashSet; +@Ignore("the testcase is under development") public class TestCHBenCHmarkLoader extends AbstractTestLoader { @Override diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java index c4e87f0a4..75fdf631b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java @@ -18,9 +18,11 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; +import org.junit.Ignore; import java.util.HashSet; +@Ignore("the testcase is under development") public class TestCHBenCHmarkWorker extends AbstractTestWorker { @Override From 88eab8e85545a7507cba8a4bf0f4f795e51f4648 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Tue, 29 Mar 2022 10:12:41 -0400 Subject: [PATCH 03/15] fixed tpch --- src/main/resources/benchmarks/tpch/dialect-hsqldb.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml b/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml index 3d129cdaf..ee0c9c9a5 100644 --- a/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml +++ b/src/main/resources/benchmarks/tpch/dialect-hsqldb.xml @@ -9,6 +9,13 @@ ]]> + + + cast(? as date) group by l_orderkey, o_orderdate, o_shippriority order by revenue desc, o_orderdate limit 10 + ]]> + + '1-URGENT' and o_orderpriority <> '2-HIGH' then 1 else 0 end) as low_line_count fromorders,lineitem where o_orderkey = l_orderkey and l_shipmode in (?, ?) and l_commitdate < l_receiptdate and l_shipdate < l_commitdate and l_receiptdate >= cast(? as date) and l_receiptdate < cast(? as date) + interval '1' year group by l_shipmode order by l_shipmode + select l_shipmode, sum(case when o_orderpriority = '1-URGENT' or o_orderpriority = '2-HIGH' then 1 else 0 end) as high_line_count, sum(case when o_orderpriority <> '1-URGENT' and o_orderpriority <> '2-HIGH' then 1 else 0 end) as low_line_count from orders,lineitem where o_orderkey = l_orderkey and l_shipmode in (?, ?) and l_commitdate < l_receiptdate and l_shipdate < l_commitdate and l_receiptdate >= cast(? as date) and l_receiptdate < cast(? as date) + interval '1' year group by l_shipmode order by l_shipmode ]]> From c53b3ffba1da06736e5a7487d42817ddc39af9c7 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Tue, 29 Mar 2022 10:13:24 -0400 Subject: [PATCH 04/15] twitter test case broken until config refactor is merged --- .../com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java | 2 ++ .../com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java index 7b618bfb0..b41118885 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java @@ -18,10 +18,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; +import org.junit.Ignore; import java.util.HashSet; import java.util.List; +@Ignore("the testcase is under development") public class TestTwitterLoader extends AbstractTestLoader { private final String[] IGNORED_TABLES = { diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java index 2faf20e37..5daba6f6f 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java @@ -2,9 +2,11 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; +import org.junit.Ignore; import java.util.HashSet; +@Ignore("the testcase is under development") public class TestTwitterWorker extends AbstractTestWorker { @Override From 4f8411bee6103a323df50a45b1f2eb77d78c8a0d Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Tue, 29 Mar 2022 12:49:22 -0400 Subject: [PATCH 05/15] adding back mockbenchmark --- .../com/oltpbenchmark/api/MockBenchmark.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/test/java/com/oltpbenchmark/api/MockBenchmark.java diff --git a/src/test/java/com/oltpbenchmark/api/MockBenchmark.java b/src/test/java/com/oltpbenchmark/api/MockBenchmark.java new file mode 100644 index 000000000..cfe7e3b46 --- /dev/null +++ b/src/test/java/com/oltpbenchmark/api/MockBenchmark.java @@ -0,0 +1,44 @@ +/****************************************************************************** + * Copyright 2015 by OLTPBenchmark Project * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +package com.oltpbenchmark.api; + +import com.oltpbenchmark.WorkloadConfiguration; + +import java.io.IOException; +import java.util.List; + +public class MockBenchmark extends BenchmarkModule { + public MockBenchmark() { + super(new WorkloadConfiguration()); + this.workConf.setBenchmarkName("mockbenchmark"); + } + + @Override + protected Package getProcedurePackageImpl() { + return null; + } + + @Override + protected Loader makeLoaderImpl() { + return null; + } + + @Override + protected List> makeWorkersImpl() throws IOException { + return null; + } +} \ No newline at end of file From 8be85401c218d7bff2c79d2ab7c87c035f3229d5 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Wed, 30 Mar 2022 20:20:56 -0400 Subject: [PATCH 06/15] in low SF runs here the entrySet size is only 1, then `this.max_value` is never set. think this is a bug --- src/main/java/com/oltpbenchmark/util/Histogram.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/oltpbenchmark/util/Histogram.java b/src/main/java/com/oltpbenchmark/util/Histogram.java index 13c030816..a11a7236b 100644 --- a/src/main/java/com/oltpbenchmark/util/Histogram.java +++ b/src/main/java/com/oltpbenchmark/util/Histogram.java @@ -204,7 +204,9 @@ private synchronized void calculateInternalValues() { // Is this value the new min/max values? if (this.min_value == null || this.min_value.compareTo(value) > 0) { this.min_value = value; - } else if (this.max_value == null || this.max_value.compareTo(value) < 0) { + } + + if (this.max_value == null || this.max_value.compareTo(value) < 0) { this.max_value = value; } @@ -215,6 +217,7 @@ private synchronized void calculateInternalValues() { this.min_count_values.add(value); this.min_count = cnt; } + if (cnt >= this.max_count) { if (cnt > this.max_count) { this.max_count_values.clear(); From 8c6d12bace495e8099621b5d83af20e82b9b738d Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Thu, 31 Mar 2022 09:20:40 -0400 Subject: [PATCH 07/15] moving collection of procedure classes from HashSet back to List to preserve ordering; also reducing logging output --- .../oltpbenchmark/api/TransactionTypes.java | 14 +---------- .../oltpbenchmark/api/AbstractTestCase.java | 11 ++++++--- .../oltpbenchmark/api/AbstractTestWorker.java | 23 +++++++++++++++---- .../auctionmark/TestAuctionMarkBenchmark.java | 7 +++--- .../auctionmark/TestAuctionMarkLoader.java | 2 +- .../auctionmark/TestAuctionMarkWorker.java | 3 ++- .../chbenchmark/TestCHBenCHmark.java | 7 +++--- .../chbenchmark/TestCHBenCHmarkLoader.java | 4 ++-- .../chbenchmark/TestCHBenCHmarkWorker.java | 4 ++-- .../epinions/TestEpinionsBenchmark.java | 7 +++--- .../epinions/TestEpinionsLoader.java | 3 +-- .../epinions/TestEpinionsWorker.java | 4 ++-- .../benchmarks/noop/TestNoOpBenchmark.java | 7 +++--- .../benchmarks/noop/TestNoOpLoader.java | 3 +-- .../benchmarks/noop/TestNoOpWorker.java | 4 ++-- .../TestResourceStresserBenchmark.java | 7 +++--- .../TestResourceStresserLoader.java | 4 ++-- .../TestResourceStresserWorker.java | 4 ++-- .../benchmarks/seats/TestSEATSBenchmark.java | 7 +++--- .../benchmarks/seats/TestSEATSLoader.java | 3 +-- .../benchmarks/seats/TestSEATSWorker.java | 4 ++-- .../smallbank/TestSmallBankBenchmark.java | 7 +++--- .../smallbank/TestSmallBankLoader.java | 4 ++-- .../smallbank/TestSmallBankWorker.java | 4 ++-- .../benchmarks/tatp/TestTATPBenchmark.java | 7 +++--- .../benchmarks/tatp/TestTATPLoader.java | 4 ++-- .../benchmarks/tatp/TestTATPWorker.java | 4 ++-- .../benchmarks/tpcc/TestTPCCBenchmark.java | 7 +++--- .../benchmarks/tpcc/TestTPCCLoader.java | 4 ++-- .../benchmarks/tpcc/TestTPCCWorker.java | 4 ++-- .../benchmarks/tpch/TestTPCHBenchmark.java | 7 +++--- .../benchmarks/tpch/TestTPCHLoader.java | 4 ++-- .../benchmarks/tpch/TestTPCHWorker.java | 4 ++-- .../twitter/TestTwitterBenchmark.java | 7 +++--- .../benchmarks/twitter/TestTwitterLoader.java | 3 +-- .../benchmarks/twitter/TestTwitterWorker.java | 4 ++-- .../benchmarks/voter/TestVoterBenchmark.java | 7 +++--- .../benchmarks/voter/TestVoterLoader.java | 3 +-- .../benchmarks/voter/TestVoterWorker.java | 4 ++-- .../wikipedia/TestWikipediaBenchmark.java | 7 +++--- .../wikipedia/TestWikipediaLoader.java | 3 +-- .../wikipedia/TestWikipediaWorker.java | 4 ++-- .../benchmarks/ycsb/TestYCSBBenchmark.java | 7 +++--- .../benchmarks/ycsb/TestYCSBLoader.java | 4 ++-- .../benchmarks/ycsb/TestYCSBWorker.java | 4 ++-- src/test/resources/log4j.properties | 6 ++--- 46 files changed, 121 insertions(+), 134 deletions(-) diff --git a/src/main/java/com/oltpbenchmark/api/TransactionTypes.java b/src/main/java/com/oltpbenchmark/api/TransactionTypes.java index 46c100168..0059b08e7 100644 --- a/src/main/java/com/oltpbenchmark/api/TransactionTypes.java +++ b/src/main/java/com/oltpbenchmark/api/TransactionTypes.java @@ -20,7 +20,6 @@ import org.apache.commons.collections4.map.ListOrderedMap; import java.util.Collection; -import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -29,14 +28,8 @@ public class TransactionTypes implements Collection { private final ListOrderedMap types = new ListOrderedMap<>(); public TransactionTypes(List transactiontypes) { - transactiontypes.sort(new Comparator() { - @Override - public int compare(TransactionType o1, TransactionType o2) { - return o1.compareTo(o2); - } - }); + transactiontypes.sort(TransactionType::compareTo); for (TransactionType tt : transactiontypes) { - // System.err.println("Adding " + tt + " - " + this.types + " / " + transactiontypes); String key = tt.getName().toUpperCase(); this.types.put(key, tt); } @@ -68,7 +61,6 @@ public boolean add(TransactionType tt) { @Override public boolean addAll(Collection c) { - // TODO Auto-generated method stub return false; } @@ -79,7 +71,6 @@ public void clear() { @Override public boolean contains(Object o) { - // TODO Auto-generated method stub return false; } @@ -100,19 +91,16 @@ public Iterator iterator() { @Override public boolean remove(Object o) { - // TODO Auto-generated method stub return false; } @Override public boolean removeAll(Collection c) { - // TODO Auto-generated method stub return false; } @Override public boolean retainAll(Collection c) { - // TODO Auto-generated method stub return false; } diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 502d7e4fe..eb3a3b209 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -21,6 +21,7 @@ import com.oltpbenchmark.types.DatabaseType; import com.oltpbenchmark.util.ClassUtil; import junit.framework.TestCase; +import org.hsqldb.Database; import org.hsqldb.persist.HsqlProperties; import org.hsqldb.server.Server; import org.slf4j.Logger; @@ -29,12 +30,11 @@ import java.io.IOException; import java.sql.Connection; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; public abstract class AbstractTestCase extends TestCase { - private static final Logger LOG = LoggerFactory.getLogger(AbstractTestCase.class); + protected final Logger LOG = LoggerFactory.getLogger(getClass()); // ----------------------------------------------------------------- @@ -66,7 +66,7 @@ public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { this.loadDatabase = loadDatabase; } - public abstract HashSet> procedures(); + public abstract List> procedures(); public abstract Class benchmarkClass(); @@ -161,11 +161,16 @@ protected final void tearDown() throws Exception { private void cleanupServer() { if (server != null) { + + LOG.info("shutting down catalogs..."); + server.shutdownCatalogs(Database.CLOSEMODE_NORMAL); + LOG.info("stopping server..."); server.stop(); LOG.info("shutting down server..."); server.shutdown(); + } } } diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java b/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java index 4b87b315f..1f07851e9 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestWorker.java @@ -18,9 +18,11 @@ package com.oltpbenchmark.api; import com.oltpbenchmark.api.Procedure.UserAbortException; +import org.apache.commons.lang3.time.StopWatch; import java.io.IOException; import java.util.List; +import java.util.concurrent.TimeUnit; public abstract class AbstractTestWorker extends AbstractTestCase { @@ -56,7 +58,7 @@ public void testGetProcedure() { Procedure proc = w.getProcedure(procClass); assertNotNull("Failed to get procedure " + procClass.getSimpleName(), proc); assertEquals(procClass, proc.getClass()); - } // FOR + } } /** @@ -69,17 +71,28 @@ public void testExecuteWork() throws Exception { w.initialize(); assertFalse(this.conn.isReadOnly()); for (TransactionType txnType : this.workConf.getTransTypes()) { - if (txnType.isSupplemental()) { continue; } + if (txnType.isSupplemental()) { + continue; + } + + StopWatch sw = new StopWatch(txnType.toString()); + try { - // Bombs away! + LOG.info("starting execution of [{}]", txnType); + sw.start(); w.executeWork(this.conn, txnType); + sw.stop(); + + } catch (UserAbortException ex) { // These are expected, so they can be ignored // Anything else is a serious error } catch (Throwable ex) { throw new RuntimeException("Failed to execute " + txnType, ex); + } finally { + + LOG.info("completed execution of [{}] in {} ms", txnType.toString(), sw.getTime(TimeUnit.MILLISECONDS)); } - conn.commit(); - } // FOR + } } } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java index 58c473bff..dd6de91d8 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkBenchmark.java @@ -24,13 +24,12 @@ import com.oltpbenchmark.benchmarks.auctionmark.util.CategoryParser; import java.io.IOException; -import java.util.HashSet; import java.util.List; import java.util.Map; public class TestAuctionMarkBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of(GetItem.class, + public static final List> PROCEDURE_CLASSES = List.of(GetItem.class, GetUserInfo.class, NewBid.class, NewComment.class, @@ -38,10 +37,10 @@ public class TestAuctionMarkBenchmark extends AbstractTestBenchmarkModule> procedures() { + public List> procedures() { return PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java index 742cc269c..749e61091 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkLoader.java @@ -31,7 +31,7 @@ public class TestAuctionMarkLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestAuctionMarkBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java index 5ea4ff51d..f87272345 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/auctionmark/TestAuctionMarkWorker.java @@ -23,13 +23,14 @@ import java.io.IOException; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.TreeSet; public class TestAuctionMarkWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestAuctionMarkBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java index 49b8f981b..07f95a71f 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmark.java @@ -21,13 +21,12 @@ import com.oltpbenchmark.benchmarks.chbenchmark.queries.*; import org.junit.Ignore; -import java.util.HashSet; import java.util.List; @Ignore("the testcase is under development") public class TestCHBenCHmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Q1.class, Q2.class, Q3.class, @@ -49,10 +48,10 @@ public class TestCHBenCHmark extends AbstractTestBenchmarkModule { Q19.class, Q20.class, Q21.class, - Q22.class)); + Q22.class); @Override - public HashSet> procedures() { + public List> procedures() { return TestCHBenCHmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java index 9d3ca8fc8..0f8b4292d 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkLoader.java @@ -20,13 +20,13 @@ import com.oltpbenchmark.api.Procedure; import org.junit.Ignore; -import java.util.HashSet; +import java.util.List; @Ignore("the testcase is under development") public class TestCHBenCHmarkLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestCHBenCHmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java index 75fdf631b..5f31db53b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/chbenchmark/TestCHBenCHmarkWorker.java @@ -20,13 +20,13 @@ import com.oltpbenchmark.api.Procedure; import org.junit.Ignore; -import java.util.HashSet; +import java.util.List; @Ignore("the testcase is under development") public class TestCHBenCHmarkWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestCHBenCHmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java index f08943c8b..97c9a15c7 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsBenchmark.java @@ -21,12 +21,11 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.epinions.procedures.*; -import java.util.HashSet; import java.util.List; public class TestEpinionsBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( GetAverageRatingByTrustedUser.class, GetItemAverageRating.class, GetItemReviewsByTrustedUser.class, @@ -35,10 +34,10 @@ public class TestEpinionsBenchmark extends AbstractTestBenchmarkModule> procedures() { + public List> procedures() { return TestEpinionsBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java index 55e384920..bad459e6d 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsLoader.java @@ -20,13 +20,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; import java.util.List; public class TestEpinionsLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestEpinionsBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java index 4a829eb77..874fa72a3 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/epinions/TestEpinionsWorker.java @@ -20,12 +20,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestEpinionsWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestEpinionsBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java index 3223cc43e..e29d5a01b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpBenchmark.java @@ -20,17 +20,16 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.noop.procedures.NoOp; -import java.util.HashSet; import java.util.List; public class TestNoOpBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( NoOp.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestNoOpBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java index 654705067..dbb7d7792 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpLoader.java @@ -19,13 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; import java.util.List; public class TestNoOpLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestNoOpBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java index b83cc2df3..a575b3315 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/noop/TestNoOpWorker.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestNoOpWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestNoOpBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java index 083c08232..35569f88a 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserBenchmark.java @@ -21,22 +21,21 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.resourcestresser.procedures.*; -import java.util.HashSet; import java.util.List; public class TestResourceStresserBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Contention1.class, Contention2.class, CPU1.class, CPU2.class, IO1.class, IO2.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestResourceStresserBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java index 5c325813c..1c23bebf3 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserLoader.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestResourceStresserLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestResourceStresserBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java index 428f110ce..fda5526e9 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/resourcestresser/TestResourceStresserWorker.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestResourceStresserWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestResourceStresserBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java index 0a6ffe266..d38955175 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSBenchmark.java @@ -23,22 +23,21 @@ import com.oltpbenchmark.catalog.Table; import java.io.InputStream; -import java.util.HashSet; import java.util.List; public class TestSEATSBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( DeleteReservation.class, FindFlights.class, FindOpenSeats.class, NewReservation.class, UpdateCustomer.class, UpdateReservation.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestSEATSBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java index 14b85e222..7526f5969 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java @@ -21,13 +21,12 @@ import com.oltpbenchmark.api.Worker; import com.oltpbenchmark.util.RandomGenerator; -import java.util.HashSet; import java.util.List; public class TestSEATSLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestSEATSBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java index b98915743..ce68f3efa 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSWorker.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestSEATSWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestSEATSBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java index baf90387c..77f975954 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankBenchmark.java @@ -21,22 +21,21 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.smallbank.procedures.*; -import java.util.HashSet; import java.util.List; public class TestSmallBankBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Amalgamate.class, Balance.class, DepositChecking.class, SendPayment.class, TransactSavings.class, WriteCheck.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestSmallBankBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java index 98f232c9d..ce39ead57 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankLoader.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestSmallBankLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestSmallBankBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java index 93a90b663..f7cc14afb 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/smallbank/TestSmallBankWorker.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestSmallBankWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestSmallBankBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java index 83f609ff3..5f2560f00 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPBenchmark.java @@ -21,12 +21,11 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tatp.procedures.*; -import java.util.HashSet; import java.util.List; public class TestTATPBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( DeleteCallForwarding.class, GetAccessData.class, GetNewDestination.class, @@ -34,10 +33,10 @@ public class TestTATPBenchmark extends AbstractTestBenchmarkModule> procedures() { + public List> procedures() { return TestTATPBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java index 0203f48cb..befc6f6e0 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPLoader.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTATPLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestTATPBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java index 3f5869dbe..4a072e8b5 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tatp/TestTATPWorker.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTATPWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestTATPBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java index 96b0507a0..dd6330d89 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCBenchmark.java @@ -21,21 +21,20 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tpcc.procedures.*; -import java.util.HashSet; import java.util.List; public class TestTPCCBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Delivery.class, NewOrder.class, OrderStatus.class, Payment.class, StockLevel.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestTPCCBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java index 233199df4..e63ea89ab 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCLoader.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTPCCLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestTPCCBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java index 29c7b1fe4..6fa9aa246 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpcc/TestTPCCWorker.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTPCCWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestTPCCBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java index 362f0e805..bf87248e2 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHBenchmark.java @@ -21,12 +21,11 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.tpch.procedures.*; -import java.util.HashSet; import java.util.List; public class TestTPCHBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Q1.class, Q2.class, Q3.class, @@ -48,10 +47,10 @@ public class TestTPCHBenchmark extends AbstractTestBenchmarkModule> procedures() { + public List> procedures() { return TestTPCHBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java index 24f152d0a..d0db44b82 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHLoader.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTPCHLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestTPCHBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java index 7725ee1cb..4c44a9b6b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestTPCHWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestTPCHBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java index 6373fa653..b6a657f8f 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterBenchmark.java @@ -24,20 +24,19 @@ import com.oltpbenchmark.benchmarks.twitter.procedures.GetTweetsFromFollowing; import com.oltpbenchmark.benchmarks.twitter.procedures.InsertTweet; -import java.util.HashSet; import java.util.List; public class TestTwitterBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( GetFollowers.class, GetTweet.class, GetTweetsFromFollowing.class, InsertTweet.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestTwitterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java index b41118885..e4fec261b 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterLoader.java @@ -20,7 +20,6 @@ import com.oltpbenchmark.api.Procedure; import org.junit.Ignore; -import java.util.HashSet; import java.util.List; @Ignore("the testcase is under development") @@ -31,7 +30,7 @@ public class TestTwitterLoader extends AbstractTestLoader { }; @Override - public HashSet> procedures() { + public List> procedures() { return TestTwitterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java index 5daba6f6f..c72ba470d 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/twitter/TestTwitterWorker.java @@ -4,13 +4,13 @@ import com.oltpbenchmark.api.Procedure; import org.junit.Ignore; -import java.util.HashSet; +import java.util.List; @Ignore("the testcase is under development") public class TestTwitterWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestTwitterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java index a4fba7ef2..db6d214c3 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterBenchmark.java @@ -20,17 +20,16 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.voter.procedures.Vote; -import java.util.HashSet; import java.util.List; public class TestVoterBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( Vote.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestVoterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java index 1a1bcae09..47017d76e 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterLoader.java @@ -19,7 +19,6 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; import java.util.List; public class TestVoterLoader extends AbstractTestLoader { @@ -29,7 +28,7 @@ public class TestVoterLoader extends AbstractTestLoader { }; @Override - public HashSet> procedures() { + public List> procedures() { return TestVoterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java index b27019d29..64e2cc984 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/voter/TestVoterWorker.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestVoterWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestVoterBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java index d6ede4b35..51bc8dbf4 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaBenchmark.java @@ -21,21 +21,20 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.wikipedia.procedures.*; -import java.util.HashSet; import java.util.List; public class TestWikipediaBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( AddWatchList.class, GetPageAnonymous.class, GetPageAuthenticated.class, RemoveWatchList.class, UpdatePage.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestWikipediaBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java index 16362197b..a00f034f4 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaLoader.java @@ -19,7 +19,6 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; import java.util.List; public class TestWikipediaLoader extends AbstractTestLoader { @@ -37,7 +36,7 @@ public class TestWikipediaLoader extends AbstractTestLoader }; @Override - public HashSet> procedures() { + public List> procedures() { return TestWikipediaBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java index e07b859d7..311e88dd3 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/wikipedia/TestWikipediaWorker.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestWikipediaWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestWikipediaBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java index 4b2af286c..aff513491 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBBenchmark.java @@ -21,22 +21,21 @@ import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.benchmarks.ycsb.procedures.*; -import java.util.HashSet; import java.util.List; public class TestYCSBBenchmark extends AbstractTestBenchmarkModule { - public static final HashSet> PROCEDURE_CLASSES = new HashSet<>(List.of( + public static final List> PROCEDURE_CLASSES = List.of( DeleteRecord.class, InsertRecord.class, ReadModifyWriteRecord.class, ReadRecord.class, ScanRecord.class, UpdateRecord.class - )); + ); @Override - public HashSet> procedures() { + public List> procedures() { return TestYCSBBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java index e1e57b0a7..64f72469e 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBLoader.java @@ -19,12 +19,12 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestYCSBLoader extends AbstractTestLoader { @Override - public HashSet> procedures() { + public List> procedures() { return TestYCSBBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java index 5edc5330e..e8b948350 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/ycsb/TestYCSBWorker.java @@ -3,12 +3,12 @@ import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; -import java.util.HashSet; +import java.util.List; public class TestYCSBWorker extends AbstractTestWorker { @Override - public HashSet> procedures() { + public List> procedures() { return TestYCSBBenchmark.PROCEDURE_CLASSES; } diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 1c3ea8f6c..0cea4ce4b 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -7,10 +7,10 @@ log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%-5p] %d [%t] %x %c %M - %m%n -log4j.logger.com.oltpbenchmark=DEBUG +log4j.logger.com.oltpbenchmark=INFO log4j.logger.org.hsqldb=DEBUG -log4j.logger.com.oltpbenchmark.benchmarks.twitter=TRACE -log4j.logger.com.oltpbenchmark.util.ThreadUtil=TRACE +log4j.logger.com.oltpbenchmark.benchmarks.twitter=INFO +log4j.logger.com.oltpbenchmark.util.ThreadUtil=INFO ## to see UserAbortException messages set this logger to DEBUG log4j.logger.com.oltpbenchmark.api.ABORT_LOG=WARN From 0563813003710f78fc8fc49e453ac97e38a70361 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Thu, 31 Mar 2022 10:02:13 -0400 Subject: [PATCH 08/15] applyed custom SF to TPCHWorker only to improve run time down from 14 minutes to 6 seconds --- .../java/com/oltpbenchmark/api/AbstractTestCase.java | 6 ++++++ .../oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index eb3a3b209..914fffefc 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -103,6 +103,8 @@ protected final void setUp() throws Exception { this.workConf.setBatchSize(128); this.workConf.setBenchmarkName(BenchmarkModule.convertBenchmarkClassToBenchmarkName(benchmarkClass())); + customWorkloadConfiguration(this.workConf); + this.benchmark = ClassUtil.newInstance(benchmarkClass(), new Object[]{this.workConf}, new Class[]{WorkloadConfiguration.class}); @@ -144,6 +146,10 @@ protected final void setUp() throws Exception { } } + protected void customWorkloadConfiguration(WorkloadConfiguration workConf) { + + } + protected void postCreateDatabaseSetup() throws IOException { } diff --git a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java index 4c44a9b6b..f589b0b90 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/tpch/TestTPCHWorker.java @@ -1,5 +1,6 @@ package com.oltpbenchmark.benchmarks.tpch; +import com.oltpbenchmark.WorkloadConfiguration; import com.oltpbenchmark.api.AbstractTestWorker; import com.oltpbenchmark.api.Procedure; @@ -7,11 +8,19 @@ public class TestTPCHWorker extends AbstractTestWorker { + private static final double SCALE_FACTOR = .001; + @Override public List> procedures() { return TestTPCHBenchmark.PROCEDURE_CLASSES; } + @Override + protected void customWorkloadConfiguration(WorkloadConfiguration workConf) { + // let's set the SF even lower than .01 for actual worker tests + this.workConf.setScaleFactor(SCALE_FACTOR); + } + @Override public Class benchmarkClass() { return TPCHBenchmark.class; From 8b9e691926f5e2060a8e3be9076982702909bc98 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Thu, 31 Mar 2022 10:06:05 -0400 Subject: [PATCH 09/15] toning down some logging --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 6 +++--- src/test/resources/log4j.properties | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 914fffefc..9b095e570 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -168,13 +168,13 @@ protected final void tearDown() throws Exception { private void cleanupServer() { if (server != null) { - LOG.info("shutting down catalogs..."); + LOG.trace("shutting down catalogs..."); server.shutdownCatalogs(Database.CLOSEMODE_NORMAL); - LOG.info("stopping server..."); + LOG.trace("stopping server..."); server.stop(); - LOG.info("shutting down server..."); + LOG.trace("shutting down server..."); server.shutdown(); } diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 0cea4ce4b..3322416fd 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -8,7 +8,7 @@ log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%-5p] %d [%t] %x %c %M - %m%n log4j.logger.com.oltpbenchmark=INFO -log4j.logger.org.hsqldb=DEBUG +log4j.logger.org.hsqldb=INFO log4j.logger.com.oltpbenchmark.benchmarks.twitter=INFO log4j.logger.com.oltpbenchmark.util.ThreadUtil=INFO From d01ca3b827ecc235f9cdca02823eae64e006a2e2 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Thu, 31 Mar 2022 10:56:41 -0400 Subject: [PATCH 10/15] cleaning up logging. starting hsqldb on random port to avoid port rare but possible port conflicts; also waiting during stop incase there is a problem brining hsqldb down --- .../oltpbenchmark/api/AbstractTestCase.java | 18 +++++++++++++++--- src/test/resources/log4j.properties | 3 +-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 9b095e570..18f2617b2 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -21,9 +21,11 @@ import com.oltpbenchmark.types.DatabaseType; import com.oltpbenchmark.util.ClassUtil; import junit.framework.TestCase; +import org.apache.commons.lang3.RandomUtils; import org.hsqldb.Database; import org.hsqldb.persist.HsqlProperties; import org.hsqldb.server.Server; +import org.hsqldb.server.ServerConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +45,6 @@ public abstract class AbstractTestCase extends TestCa * This should always be one of the embedded java databases */ private static final DatabaseType DB_TYPE = DatabaseType.HSQLDB; - private static final String DB_CONNECTION = "jdbc:hsqldb:hsql://localhost:9001/benchbase"; // ----------------------------------------------------------------- @@ -76,16 +77,18 @@ public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { protected final void setUp() throws Exception { HsqlProperties props = new HsqlProperties(); //props.setProperty("server.remote_open", true); + + int port = RandomUtils.nextInt(9001, 10000); + server = new Server(); server.setProperties(props); server.setDatabasePath(0, "mem:benchbase;sql.syntax_mys=true"); server.setDatabaseName(0, "benchbase"); server.setAddress("localhost"); - server.setPort(9001); + server.setPort(port); server.setSilent(true); server.start(); - this.workConf = new WorkloadConfiguration(); TransactionTypes txnTypes = new TransactionTypes(new ArrayList<>()); @@ -95,6 +98,8 @@ protected final void setUp() throws Exception { txnTypes.add(tt); } + String DB_CONNECTION = String.format("jdbc:hsqldb:hsql://localhost:%d/benchbase", server.getPort()); + this.workConf.setTransTypes(txnTypes); this.workConf.setDatabaseType(DB_TYPE); this.workConf.setUrl(DB_CONNECTION); @@ -174,6 +179,13 @@ private void cleanupServer() { LOG.trace("stopping server..."); server.stop(); + while (server.getState() != ServerConstants.SERVER_STATE_SHUTDOWN) { + try { + Thread.sleep(100); + } catch (InterruptedException ignore) { + } + } + LOG.trace("shutting down server..."); server.shutdown(); diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 3322416fd..b5d39e164 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -8,8 +8,7 @@ log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%-5p] %d [%t] %x %c %M - %m%n log4j.logger.com.oltpbenchmark=INFO -log4j.logger.org.hsqldb=INFO -log4j.logger.com.oltpbenchmark.benchmarks.twitter=INFO +#log4j.logger.org.hsqldb=WARN log4j.logger.com.oltpbenchmark.util.ThreadUtil=INFO ## to see UserAbortException messages set this logger to DEBUG From c445f56354c32b6e56205a3d0f9928dce9de8df7 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Fri, 1 Apr 2022 10:42:51 -0400 Subject: [PATCH 11/15] fixing some test flakes --- .../com/oltpbenchmark/util/Histogram.java | 26 ++++++++++++------- .../oltpbenchmark/api/AbstractTestCase.java | 9 +++++-- .../benchmarks/seats/TestSEATSLoader.java | 10 +++++-- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/oltpbenchmark/util/Histogram.java b/src/main/java/com/oltpbenchmark/util/Histogram.java index a11a7236b..9abc35243 100644 --- a/src/main/java/com/oltpbenchmark/util/Histogram.java +++ b/src/main/java/com/oltpbenchmark/util/Histogram.java @@ -95,15 +95,6 @@ public Histogram(boolean keepZeroEntries) { this.keep_zero_entries = keepZeroEntries; } - @Override - public boolean equals(Object obj) { - if (obj instanceof Histogram) { - Histogram other = (Histogram) obj; - return (this.histogram.equals(other.histogram)); - } - return (false); - } - public boolean hasDebugLabels() { return (this.debug_names != null && !this.debug_names.isEmpty()); } @@ -488,6 +479,23 @@ public boolean contains(X value) { return (this.histogram.containsKey(value)); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Histogram histogram1 = (Histogram) o; + return Objects.equals(histogram, histogram1.histogram); + } + + @Override + public int hashCode() { + return Objects.hash(histogram); + } + // ---------------------------------------------------------------------------- // DEBUG METHODS // ---------------------------------------------------------------------------- diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 18f2617b2..2c05c2f7a 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -21,7 +21,6 @@ import com.oltpbenchmark.types.DatabaseType; import com.oltpbenchmark.util.ClassUtil; import junit.framework.TestCase; -import org.apache.commons.lang3.RandomUtils; import org.hsqldb.Database; import org.hsqldb.persist.HsqlProperties; import org.hsqldb.server.Server; @@ -33,6 +32,7 @@ import java.sql.Connection; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; public abstract class AbstractTestCase extends TestCase { @@ -61,6 +61,8 @@ public abstract class AbstractTestCase extends TestCa protected final boolean createDatabase; protected final boolean loadDatabase; + private static final AtomicInteger portCounter = new AtomicInteger(9001); + public AbstractTestCase(boolean createDatabase, boolean loadDatabase) { this.createDatabase = createDatabase; @@ -78,7 +80,9 @@ protected final void setUp() throws Exception { HsqlProperties props = new HsqlProperties(); //props.setProperty("server.remote_open", true); - int port = RandomUtils.nextInt(9001, 10000); + int port = portCounter.incrementAndGet(); + + LOG.info("starting HSQLDB server for test [{}] on port [{}]", this.getClass().getSimpleName(), port); server = new Server(); server.setProperties(props); @@ -87,6 +91,7 @@ protected final void setUp() throws Exception { server.setAddress("localhost"); server.setPort(port); server.setSilent(true); + server.setLogWriter(null); server.start(); this.workConf = new WorkloadConfiguration(); diff --git a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java index 7526f5969..13800e2c4 100644 --- a/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java +++ b/src/test/java/com/oltpbenchmark/benchmarks/seats/TestSEATSLoader.java @@ -19,8 +19,8 @@ import com.oltpbenchmark.api.AbstractTestLoader; import com.oltpbenchmark.api.Procedure; import com.oltpbenchmark.api.Worker; -import com.oltpbenchmark.util.RandomGenerator; +import java.io.IOException; import java.util.List; public class TestSEATSLoader extends AbstractTestLoader { @@ -35,6 +35,12 @@ public Class benchmarkClass() { return SEATSBenchmark.class; } + @Override + protected void postCreateDatabaseSetup() throws IOException { + super.postCreateDatabaseSetup(); + SEATSProfile.clearCachedProfile(); + } + /** * testSaveLoadProfile */ @@ -49,7 +55,7 @@ public void testSaveLoadProfile() throws Exception { // Make sure there is something in our profile after loading the database assertFalse("Empty Profile: airport_max_customer_id", orig.airport_max_customer_id.isEmpty()); - SEATSProfile copy = new SEATSProfile(this.benchmark, new RandomGenerator(0)); + SEATSProfile copy = new SEATSProfile(this.benchmark, benchmark.getRandomGenerator()); assert (copy.airport_histograms.isEmpty()); List> workers = this.benchmark.makeWorkers(); From 6161a05d8d37a937661319bfdafdb4116c209534 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Fri, 1 Apr 2022 10:48:53 -0400 Subject: [PATCH 12/15] making change to NoOp based on feedback from @pavlo --- .../oltpbenchmark/benchmarks/noop/procedures/NoOp.java | 2 +- src/main/resources/benchmarks/noop/dialect-hsqldb.xml | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/benchmarks/noop/dialect-hsqldb.xml diff --git a/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java b/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java index 6eb1a51ed..a67548804 100644 --- a/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java +++ b/src/main/java/com/oltpbenchmark/benchmarks/noop/procedures/NoOp.java @@ -38,7 +38,7 @@ public class NoOp extends Procedure { // The query only contains a semi-colon // That is enough for the DBMS to have to parse it and do something - public final SQLStmt noopStmt = new SQLStmt("select 1"); + public final SQLStmt noopStmt = new SQLStmt(";"); public void run(Connection conn) { try (PreparedStatement stmt = this.getPreparedStatement(conn, noopStmt)) { diff --git a/src/main/resources/benchmarks/noop/dialect-hsqldb.xml b/src/main/resources/benchmarks/noop/dialect-hsqldb.xml new file mode 100644 index 000000000..bb82d0ca9 --- /dev/null +++ b/src/main/resources/benchmarks/noop/dialect-hsqldb.xml @@ -0,0 +1,10 @@ + + + + + + + + + + From 295b870ab6bb43b3f324de16ebc4bceceda6e0a1 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Fri, 1 Apr 2022 11:06:01 -0400 Subject: [PATCH 13/15] updating logging to capture test name --- src/test/java/com/oltpbenchmark/api/AbstractTestCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java index 2c05c2f7a..fbbc37802 100644 --- a/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java +++ b/src/test/java/com/oltpbenchmark/api/AbstractTestCase.java @@ -82,7 +82,7 @@ protected final void setUp() throws Exception { int port = portCounter.incrementAndGet(); - LOG.info("starting HSQLDB server for test [{}] on port [{}]", this.getClass().getSimpleName(), port); + LOG.info("starting HSQLDB server for test [{}] on port [{}]", this.getName(), port); server = new Server(); server.setProperties(props); From 502984dc2eb45ea08b9cb8f102d284d14cfcf5db Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Tue, 12 Apr 2022 09:08:24 -0400 Subject: [PATCH 14/15] fixing conflict --- .../benchmarks/epinions/ddl-generic.sql | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/main/resources/benchmarks/epinions/ddl-generic.sql b/src/main/resources/benchmarks/epinions/ddl-generic.sql index aa7214db4..210ced530 100644 --- a/src/main/resources/benchmarks/epinions/ddl-generic.sql +++ b/src/main/resources/benchmarks/epinions/ddl-generic.sql @@ -1,47 +1,55 @@ +DROP TABLE IF EXISTS trust CASCADE; +DROP TABLE IF EXISTS review CASCADE; +DROP TABLE IF EXISTS review_rating CASCADE; DROP TABLE IF EXISTS useracct CASCADE; +DROP TABLE IF EXISTS item CASCADE; + CREATE TABLE useracct ( - u_id int NOT NULL, - name varchar(128) DEFAULT NULL, + u_id int NOT NULL, + name varchar(128) NOT NULL, + email varchar(128) NOT NULL, + creation_date datetime DEFAULT NULL, PRIMARY KEY (u_id) ); -DROP TABLE IF EXISTS item CASCADE; CREATE TABLE item ( - i_id int NOT NULL, - title varchar(20) DEFAULT NULL, + i_id int NOT NULL, + title varchar(128) NOT NULL, + description varchar(512) DEFAULT NULL, + creation_date datetime DEFAULT NULL, PRIMARY KEY (i_id) ); -DROP TABLE IF EXISTS review CASCADE; CREATE TABLE review ( - a_id int NOT NULL, - u_id int NOT NULL REFERENCES useracct (u_id), - i_id int NOT NULL REFERENCES item (i_id), - rating int DEFAULT NULL, - rank int DEFAULT NULL + a_id int NOT NULL, + u_id int NOT NULL REFERENCES useracct (u_id), + i_id int NOT NULL REFERENCES item (i_id), + rating int DEFAULT NULL, + rank int DEFAULT NULL, + comment varchar(256) DEFAULT NULL, + creation_date datetime DEFAULT NULL ); CREATE INDEX IDX_RATING_UID ON review (u_id); CREATE INDEX IDX_RATING_AID ON review (a_id); CREATE INDEX IDX_RATING_IID ON review (i_id); -DROP TABLE IF EXISTS review_rating CASCADE; -CREATE TABLE review_rating ( - u_id int NOT NULL REFERENCES useracct (u_id), - a_id int NOT NULL, - rating int NOT NULL, - status int NOT NULL, - creation_date datetime DEFAULT NULL, - last_mod_date datetime DEFAULT NULL, - type int DEFAULT NULL, - vertical_id int DEFAULT NULL +CREATE TABLE review_rating +( + u_id int NOT NULL REFERENCES useracct (u_id), + a_id int NOT NULL, + rating int NOT NULL, + status int NOT NULL, + creation_date datetime DEFAULT NULL, + last_mod_date datetime DEFAULT NULL, + type int DEFAULT NULL, + vertical_id int DEFAULT NULL ); CREATE INDEX IDX_REVIEW_RATING_UID ON review_rating (u_id); CREATE INDEX IDX_REVIEW_RATING_AID ON review_rating (a_id); -DROP TABLE IF EXISTS trust CASCADE; CREATE TABLE trust ( source_u_id int NOT NULL REFERENCES useracct (u_id), @@ -50,4 +58,4 @@ CREATE TABLE trust creation_date datetime DEFAULT NULL ); CREATE INDEX IDX_TRUST_SID ON trust (source_u_id); -CREATE INDEX IDX_TRUST_TID ON trust (target_u_id); \ No newline at end of file +CREATE INDEX IDX_TRUST_TID ON trust (target_u_id); From b19ea4d49dec1ac8c8ca3b27ed79f1efde2cf734 Mon Sep 17 00:00:00 2001 From: Tim Veil <3260845+timveil@users.noreply.github.com> Date: Tue, 12 Apr 2022 09:14:05 -0400 Subject: [PATCH 15/15] fixing conflict --- .../benchmarks/epinions/ddl-generic.sql | 73 +++++++++---------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/src/main/resources/benchmarks/epinions/ddl-generic.sql b/src/main/resources/benchmarks/epinions/ddl-generic.sql index 210ced530..5afcd469e 100644 --- a/src/main/resources/benchmarks/epinions/ddl-generic.sql +++ b/src/main/resources/benchmarks/epinions/ddl-generic.sql @@ -4,58 +4,53 @@ DROP TABLE IF EXISTS review_rating CASCADE; DROP TABLE IF EXISTS useracct CASCADE; DROP TABLE IF EXISTS item CASCADE; -CREATE TABLE useracct -( - u_id int NOT NULL, - name varchar(128) NOT NULL, - email varchar(128) NOT NULL, - creation_date datetime DEFAULT NULL, - PRIMARY KEY (u_id) +CREATE TABLE useracct ( + u_id int NOT NULL, + name varchar(128) NOT NULL, + email varchar(128) NOT NULL, + creation_date datetime DEFAULT NULL, + PRIMARY KEY (u_id) ); -CREATE TABLE item -( - i_id int NOT NULL, - title varchar(128) NOT NULL, - description varchar(512) DEFAULT NULL, - creation_date datetime DEFAULT NULL, - PRIMARY KEY (i_id) +CREATE TABLE item ( + i_id int NOT NULL, + title varchar(128) NOT NULL, + description varchar(512) DEFAULT NULL, + creation_date datetime DEFAULT NULL, + PRIMARY KEY (i_id) ); -CREATE TABLE review -( - a_id int NOT NULL, - u_id int NOT NULL REFERENCES useracct (u_id), - i_id int NOT NULL REFERENCES item (i_id), - rating int DEFAULT NULL, - rank int DEFAULT NULL, - comment varchar(256) DEFAULT NULL, - creation_date datetime DEFAULT NULL +CREATE TABLE review ( + a_id int NOT NULL, + u_id int NOT NULL REFERENCES useracct (u_id), + i_id int NOT NULL REFERENCES item (i_id), + rating int DEFAULT NULL, + rank int DEFAULT NULL, + comment varchar(256) DEFAULT NULL, + creation_date datetime DEFAULT NULL ); CREATE INDEX IDX_RATING_UID ON review (u_id); CREATE INDEX IDX_RATING_AID ON review (a_id); CREATE INDEX IDX_RATING_IID ON review (i_id); -CREATE TABLE review_rating -( - u_id int NOT NULL REFERENCES useracct (u_id), - a_id int NOT NULL, - rating int NOT NULL, - status int NOT NULL, - creation_date datetime DEFAULT NULL, - last_mod_date datetime DEFAULT NULL, - type int DEFAULT NULL, - vertical_id int DEFAULT NULL +CREATE TABLE review_rating ( + u_id int NOT NULL REFERENCES useracct (u_id), + a_id int NOT NULL, + rating int NOT NULL, + status int NOT NULL, + creation_date datetime DEFAULT NULL, + last_mod_date datetime DEFAULT NULL, + type int DEFAULT NULL, + vertical_id int DEFAULT NULL ); CREATE INDEX IDX_REVIEW_RATING_UID ON review_rating (u_id); CREATE INDEX IDX_REVIEW_RATING_AID ON review_rating (a_id); -CREATE TABLE trust -( - source_u_id int NOT NULL REFERENCES useracct (u_id), - target_u_id int NOT NULL REFERENCES useracct (u_id), - trust int NOT NULL, - creation_date datetime DEFAULT NULL +CREATE TABLE trust ( + source_u_id int NOT NULL REFERENCES useracct (u_id), + target_u_id int NOT NULL REFERENCES useracct (u_id), + trust int NOT NULL, + creation_date datetime DEFAULT NULL ); CREATE INDEX IDX_TRUST_SID ON trust (source_u_id); CREATE INDEX IDX_TRUST_TID ON trust (target_u_id);