From b75381d76ec5dda5a7bf6fe157860f462606c2e8 Mon Sep 17 00:00:00 2001 From: "Gzx@151" Date: Wed, 28 Feb 2024 23:01:41 +0800 Subject: [PATCH] fix some bug while running --- .vscode/setting.json | 8 + LICENSE | 192 ++++++++++++++++- LICENSE-APACHE | 201 ------------------ olxpbenchmark | 2 +- pom.xml | 39 +++- script/build.sh | 2 +- .../java/com/olxpbenchmark/DBWorkload.java | 49 ++--- .../java/com/olxpbenchmark/util/FileUtil.java | 2 +- .../com/olxpbenchmark/util/StringUtil.java | 4 +- .../com/olxpbenchmark/util/ThreadUtil.java | 6 +- src/test/java/com/olxpbenchmark/AppTest.java | 18 ++ 11 files changed, 273 insertions(+), 250 deletions(-) create mode 100644 .vscode/setting.json delete mode 100644 LICENSE-APACHE create mode 100644 src/test/java/com/olxpbenchmark/AppTest.java diff --git a/.vscode/setting.json b/.vscode/setting.json new file mode 100644 index 0000000..2e2c2cc --- /dev/null +++ b/.vscode/setting.json @@ -0,0 +1,8 @@ +{ + "files.watcherExclude": { + "**/target": true + }, + "java.format.settings.profile": "GoogleStyle", + "java.format.enabled": true, + "editor.formatOnSaveMode": "modificationsIfAvailable" +} diff --git a/LICENSE b/LICENSE index a195332..cd482d8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,198 @@ -Copyright 2023 by Web3Bench Project +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ -This work was based on the OLxPBenchmark Project +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] 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 +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, diff --git a/LICENSE-APACHE b/LICENSE-APACHE deleted file mode 100644 index cd482d8..0000000 --- a/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all -other entities that control, are controlled by, or are under common -control with that entity. For the purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or -otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation -source, and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or -Object form, made available under the License, as indicated by a -copyright notice that is included in or attached to the work -(an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including -the original version of the Work and any modifications or additions -to that Work or Derivative Works thereof, that is intentionally -submitted to Licensor for inclusion in the Work by the copyright owner -or by an individual or Legal Entity authorized to submit on behalf of -the copyright owner. For the purposes of this definition, "submitted" -means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, -and issue tracking systems that are managed by, or on behalf of, the -Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise -designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work, -where such license applies only to those patent claims licensable -by such Contributor that are necessarily infringed by their -Contribution(s) alone or by combination of their Contribution(s) -with the Work to which such Contribution(s) was submitted. If You -institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work -or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate -as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You -meet the following conditions: - -(a) You must give any other recipients of the Work or -Derivative Works a copy of this License; and - -(b) You must cause any modified files to carry prominent notices -stating that You changed the files; and - -(c) You must retain, in the Source form of any Derivative Works -that You distribute, all copyright, patent, trademark, and -attribution notices from the Source form of the Work, -excluding those notices that do not pertain to any part of -the Derivative Works; and - -(d) If the Work includes a "NOTICE" text file as part of its -distribution, then any Derivative Works that You distribute must -include a readable copy of the attribution notices contained -within such NOTICE file, excluding those notices that do not -pertain to any part of the Derivative Works, in at least one -of the following places: within a NOTICE text file distributed -as part of the Derivative Works; within the Source form or -documentation, if provided along with the Derivative Works; or, -within a display generated by the Derivative Works, if and -wherever such third-party notices normally appear. The contents -of the NOTICE file are for informational purposes only and -do not modify the License. You may add Your own attribution -notices within Derivative Works that You distribute, alongside -or as an addendum to the NOTICE text from the Work, provided -that such additional attribution notices cannot be construed -as modifying the License. - -You may add Your own copyright statement to Your modifications and -may provide additional or different license terms and conditions -for use, reproduction, or distribution of Your modifications, or -for any such Derivative Works as a whole, provided Your use, -reproduction, and distribution of the Work otherwise complies with -the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -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. diff --git a/olxpbenchmark b/olxpbenchmark index 4331467..30df422 100755 --- a/olxpbenchmark +++ b/olxpbenchmark @@ -1,2 +1,2 @@ #!/bin/bash -java -Dlog4j.configuration=log4j.properties -cp olxpbenchmark-2.0.jar $@ +java -jar target/olxpbenchmark-2.0-jar-with-dependencies.jar -Dlog4j.configuration=log4j.properties $@ diff --git a/pom.xml b/pom.xml index 08a7bc3..94a9f07 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.olxpbenchmark - olxpbench + olxpbenchmark 2.0 jar @@ -17,7 +17,39 @@ 8 + + + + maven-assembly-plugin + + + package + + single + + + + + + jar-with-dependencies + + + + com.olxpbenchmark.DBWorkload + + + + + + + + + junit + junit + 4.11 + test + org.xerial @@ -39,8 +71,6 @@ hsqldb 2.7.2 - - org.slf4j slf4j-api @@ -97,9 +127,6 @@ ganymed-ssh2 261 - - - javax.xml.bind jaxb-api diff --git a/script/build.sh b/script/build.sh index 25296af..919318b 100755 --- a/script/build.sh +++ b/script/build.sh @@ -3,4 +3,4 @@ # Navigate to the project directory cd .. -mvn clean install +mvn clean package diff --git a/src/main/java/com/olxpbenchmark/DBWorkload.java b/src/main/java/com/olxpbenchmark/DBWorkload.java index d9999ee..ddace59 100755 --- a/src/main/java/com/olxpbenchmark/DBWorkload.java +++ b/src/main/java/com/olxpbenchmark/DBWorkload.java @@ -58,7 +58,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; @@ -66,10 +65,10 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; -import org.apache.commons.cli.PosixParser; import org.apache.commons.collections4.map.ListOrderedMap; import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; import org.apache.commons.configuration2.builder.fluent.Parameters; @@ -79,7 +78,8 @@ import org.apache.commons.configuration2.XMLConfiguration; import org.apache.commons.configuration2.tree.ImmutableNode; import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine; -import org.apache.log4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.Logger; import com.olxpbenchmark.api.BenchmarkModule; import com.olxpbenchmark.api.TransactionType; @@ -97,7 +97,7 @@ import com.olxpbenchmark.util.JSONSerializable; public class DBWorkload { - private static final Logger LOG = Logger.getLogger(DBWorkload.class); + private static final Logger LOG = LoggerFactory.getLogger(DBWorkload.class); private static final String SINGLE_LINE = StringUtil.repeat("=", 70); @@ -109,23 +109,11 @@ public class DBWorkload { * @throws Exception */ public static void main(String[] args) throws Exception { - // Initialize log4j - String log4jPath = System.getProperty("log4j.configuration"); - if (log4jPath != null) { - org.apache.log4j.PropertyConfigurator.configure(log4jPath); - } else { - throw new RuntimeException("Missing log4j.properties file"); - } - - if (ClassUtil.isAssertsEnabled()) { - LOG.warn("\n" + getAssertWarning()); - } // create the command line parser - CommandLineParser parser = new PosixParser(); - XMLConfiguration pluginConfig = pluginConfig = buildConfiguration("config/plugin.xml"); + CommandLineParser parser = new DefaultParser(); + XMLConfiguration pluginConfig = buildConfiguration("config/plugin.xml"); - pluginConfig.setExpressionEngine(new XPathExpressionEngine()); Options options = new Options(); options.addOption("b", "bench", true, "[required] Benchmark class. Currently supported: " + pluginConfig.getList("/plugin//@name")); @@ -165,7 +153,7 @@ public static void main(String[] args) throws Exception { printUsage(options); return; } else if (argsLine.hasOption("b") == false) { - LOG.fatal("Missing Benchmark Class to load"); + LOG.error("Missing Benchmark Class to load"); printUsage(options); return; } @@ -208,7 +196,6 @@ public static void main(String[] args) throws Exception { String configFile = argsLine.getOptionValue("c"); XMLConfiguration xmlConfig = buildConfiguration(configFile); - xmlConfig.setExpressionEngine(new XPathExpressionEngine()); // Load the configuration for each benchmark int lastTxnId = 0; @@ -365,12 +352,12 @@ public static void main(String[] args) throws Exception { // Get the name for the grouping and make sure it's valid. String groupingName = xmlConfig.getString(key + "/name").toLowerCase(); if (!groupingName.matches("^[a-z]\\w*$")) { - LOG.fatal(String.format("Grouping name \"%s\" is invalid." + LOG.error(String.format("Grouping name \"%s\" is invalid." + " Must begin with a letter and contain only" + " alphanumeric characters.", groupingName)); System.exit(-1); } else if (groupingName.equals("all")) { - LOG.fatal("Grouping name \"all\" is reserved." + LOG.error("Grouping name \"all\" is reserved." + " Please pick a different name."); System.exit(-1); } @@ -379,7 +366,7 @@ public static void main(String[] args) throws Exception { // is an appropriate number of them. List groupingWeights = Arrays.asList(xmlConfig.getString(key + "/weights").split("\\s*,\\s*")); if (groupingWeights.size() != numTxnTypes) { - LOG.fatal(String.format("Grouping \"%s\" has %d weights," + LOG.error(String.format("Grouping \"%s\" has %d weights," + " but there are %d transactions in this" + " benchmark.", groupingName, groupingWeights.size(), numTxnTypes)); @@ -433,18 +420,18 @@ public static void main(String[] args) throws Exception { } else if (rate_string.equals(RATE_UNLIMITED)) { rateLimited = false; } else if (rate_string.isEmpty()) { - LOG.fatal(String.format("Please specify the rate for phase %d and workload %s", i, plugin)); + LOG.error(String.format("Please specify the rate for phase %d and workload %s", i, plugin)); System.exit(-1); } else { try { rate = Integer.parseInt(rate_string); if (rate < 1) { - LOG.fatal("Rate limit must be at least 1. Use unlimited or disabled values instead."); + LOG.error("Rate limit must be at least 1. Use unlimited or disabled values instead."); System.exit(-1); } wrkld.setRate(rate); } catch (NumberFormatException e) { - LOG.fatal(String.format("Rate string must be '%s', '%s' or a number", RATE_DISABLED, + LOG.error(String.format("Rate string must be '%s', '%s' or a number", RATE_DISABLED, RATE_UNLIMITED)); System.exit(-1); } @@ -466,7 +453,7 @@ public static void main(String[] args) throws Exception { } else if (serial_string.equals("false")) { serial = false; } else { - LOG.fatal(String.format("Invalid string for serial: '%s'. Serial string must be 'true' or 'false'", + LOG.error(String.format("Invalid string for serial: '%s'. Serial string must be 'true' or 'false'", serial_string)); System.exit(-1); } @@ -501,7 +488,7 @@ public static void main(String[] args) throws Exception { LOG.info("Timer disabled for serial run; will execute" + " all queries exactly once."); } else { - LOG.fatal("Must provide positive time bound for" + LOG.error("Must provide positive time bound for" + " non-serial executions. Either provide" + " a valid time or enable serial mode."); System.exit(-1); @@ -510,7 +497,7 @@ public static void main(String[] args) throws Exception { LOG.info("Timer enabled for serial run; will run queries" + " serially in a loop until the timer expires."); if (warmup < 0) { - LOG.fatal("Must provide nonnegative time bound for" + LOG.error("Must provide nonnegative time bound for" + " warmup."); System.exit(-1); } @@ -532,11 +519,11 @@ public static void main(String[] args) throws Exception { for (Phase p : wrkld.getAllPhases()) { j++; if (p.getWeightCount() != wrkld.getNumTxnTypes()) { - LOG.fatal(String.format( + LOG.error(String.format( "Configuration files is inconsistent, phase %d contains %d weights but you defined %d transaction types", j, p.getWeightCount(), wrkld.getNumTxnTypes())); if (p.isSerial()) { - LOG.fatal( + LOG.error( "However, note that since this a serial phase, the weights are irrelevant (but still must be included---sorry)."); } System.exit(-1); diff --git a/src/main/java/com/olxpbenchmark/util/FileUtil.java b/src/main/java/com/olxpbenchmark/util/FileUtil.java index cfb4fd9..f9d29c2 100644 --- a/src/main/java/com/olxpbenchmark/util/FileUtil.java +++ b/src/main/java/com/olxpbenchmark/util/FileUtil.java @@ -309,10 +309,10 @@ public static byte[] readBytesFromFile(String path) throws IOException { while ((offset < bytes.length) && ((numRead = in.read(bytes, offset, bytes.length - offset)) >= 0)) { offset += numRead; } // WHILE + in.close(); if (offset < bytes.length) { throw new IOException("Failed to read the entire contents of '" + file.getName() + "'"); } - in.close(); return (bytes); } diff --git a/src/main/java/com/olxpbenchmark/util/StringUtil.java b/src/main/java/com/olxpbenchmark/util/StringUtil.java index 71d2e68..2452ca0 100644 --- a/src/main/java/com/olxpbenchmark/util/StringUtil.java +++ b/src/main/java/com/olxpbenchmark/util/StringUtil.java @@ -16,12 +16,9 @@ package com.olxpbenchmark.util; -import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.text.DecimalFormat; import java.util.Arrays; import java.util.HashMap; @@ -513,6 +510,7 @@ public static String addSpacers(String str) { * @param items * @return */ + @SafeVarargs public static String join(String delimiter, T... items) { return (join(delimiter, Arrays.asList(items))); } diff --git a/src/main/java/com/olxpbenchmark/util/ThreadUtil.java b/src/main/java/com/olxpbenchmark/util/ThreadUtil.java index 2f64b21..930d61e 100644 --- a/src/main/java/com/olxpbenchmark/util/ThreadUtil.java +++ b/src/main/java/com/olxpbenchmark/util/ThreadUtil.java @@ -125,7 +125,7 @@ public static Pair exec(String command[]) { pid_field.setAccessible(true); pid = pid_field.getInt(p); } catch (Exception ex) { - LOG.fatal("Faild to get pid for " + p, ex); + LOG.error("Faild to get pid for " + p, ex); return (null); } assert (pid != null) : "Failed to get pid for " + p; @@ -162,7 +162,7 @@ public static void fork(String command[], final EventObservable stop_obse try { temp = pb.start(); } catch (IOException e) { - LOG.fatal("Failed to fork command", e); + LOG.error("Failed to fork command", e); return; } assert (temp != null); @@ -307,7 +307,7 @@ private static final void run(final Collection runnables try { latch.await(); } catch (InterruptedException ex) { - LOG.fatal("ThreadUtil.run() was interupted!", ex); + LOG.error("ThreadUtil.run() was interupted!", ex); throw new RuntimeException(ex); } finally { if (handler.hasError()) { diff --git a/src/test/java/com/olxpbenchmark/AppTest.java b/src/test/java/com/olxpbenchmark/AppTest.java new file mode 100644 index 0000000..e855a65 --- /dev/null +++ b/src/test/java/com/olxpbenchmark/AppTest.java @@ -0,0 +1,18 @@ +package com.olxpbenchmark; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest { + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() { + assertTrue(true); + } +}