⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jtpcc.java

📁 业界最为经典的SQL性能测试工具
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * jTPCC - Open Source Java implementation of a TPC-C like benchmark
 *
 * Copyright (C) 2003, Raul Barbosa
 * Copyright (C) 2004-2006, Denis Lussier
 *
 */
 
import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import javax.swing.*;
import javax.swing.border.*;

import client.JOutputArea;
import client.jTPCCConfig;

import java.awt.*;
import java.awt.event.*;   
  
public class jTPCC extends JFrame implements jTPCCConfig, ActionListener, WindowListener
{
    private JTabbedPane jTabbedPane;
    private JPanel jPanelControl, jPanelConfigSwitch, jPanelTerminalOutputs, jPanelOutputSwitch;
    private JButton jButtonNextTerminal, jButtonPreviousTerminal;
    private JOutputArea jOutputAreaControl, jOutputAreaErrors;
    private JLabel jLabelInformation, jPanelTerminalOutputsLabel;
    private ImageIcon imageIconDot;
    private int currentlyDisplayedTerminal;

    private JButton jButtonSelectDatabase, jButtonSelectTerminals, jButtonSelectControls, jButtonSelectWeights;
    private JPanel jPanelConfigDatabase, jPanelConfigTerminals, jPanelConfigControls, jPanelConfigWeights;
    private Border jPanelConfigSwitchBorder;

    private JTextField jTextFieldDatabase, jTextFieldUsername, jTextFieldPassword, jTextFieldDriver, jTextFieldNumTerminals, jTextFieldTransactionsPerTerminal, jTextFieldNumWarehouses, jTextFieldMinutes;
    private JButton jButtonCreateTerminals, jButtonStartTransactions, jButtonStopTransactions;
    private JTextField paymentWeight, orderStatusWeight, deliveryWeight, stockLevelWeight;
    private JRadioButton jRadioButtonTime, jRadioButtonNum;
    private JCheckBox jCheckBoxDebugMessages;

    private jTPCCTerminal[] terminals;
    private JOutputArea[] terminalOutputAreas;
    private String[] terminalNames;
    private boolean terminalsBlockingExit = false;
    private Random random;
    private long terminalsStarted = 0, sessionCount = 0, transactionCount;

    private long newOrderCounter, sessionStartTimestamp, sessionEndTimestamp, sessionNextTimestamp=0, sessionNextKounter=0;
    private long sessionEndTargetTime = -1, fastNewOrderCounter, recentTpmC=0;
    private boolean signalTerminalsRequestEndSent = false, databaseDriverLoaded = false;

    private FileOutputStream fileOutputStream;
    private PrintStream printStreamReport;
    private String sessionStart, sessionEnd;

    public static void main(String args[])
    {
        new jTPCC();
    }

    public jTPCC()
    {
    super("BenchmarkSQL v" + JTPCCVERSION);

    // load the ini file
    Properties ini = new Properties();
//    try {
//      ini.load( new FileInputStream(System.getProperty("prop")));
//
//    } catch (IOException e) {
//      System.out.println("could not load properties file");
//    }
                                                                               
    // display the values we need
//    System.out.println("driver=" + ini.getProperty("driver"));
//    System.out.println("conn=" + ini.getProperty("conn"));
//    System.out.println("user=" + ini.getProperty("user"));
//    System.out.println("password=******");
                                                                               
        this.random = new Random(System.currentTimeMillis());
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        this.setSize(800, 680);
        this.setLocation(112, 30);
        this.setIconImage((new ImageIcon("images/icon.gif")).getImage());
        this.addWindowListener((WindowListener)this);


        imageIconDot = new ImageIcon("images/dot.gif");


        jPanelControl = new JPanel();
        jPanelControl.setLayout(new BorderLayout());
        JPanel jPanelConfig = new JPanel();
        jPanelConfig.setLayout(new BorderLayout());
        jPanelControl.add(jPanelConfig, BorderLayout.NORTH);


        JPanel jPanelConfigSelect = new JPanel();
        jPanelConfigSelect.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), " Options ", TitledBorder.CENTER, TitledBorder.TOP));
        GridLayout jPanelConfigSelectLayout = new GridLayout(4, 1);
        jPanelConfigSelectLayout.setVgap(10);
        jPanelConfigSelect.setLayout(jPanelConfigSelectLayout);
        jButtonSelectDatabase = new JButton("Database");
        jButtonSelectDatabase.addActionListener(this);
        jPanelConfigSelect.add(jButtonSelectDatabase);
        jButtonSelectTerminals = new JButton("Terminals");
        jButtonSelectTerminals.addActionListener(this);
        jPanelConfigSelect.add(jButtonSelectTerminals);
        jButtonSelectWeights = new JButton("Weights");
        jButtonSelectWeights.addActionListener(this);
        jPanelConfigSelect.add(jButtonSelectWeights);
        jButtonSelectControls = new JButton("Controls");
        jButtonSelectControls.addActionListener(this);
        jPanelConfigSelect.add(jButtonSelectControls);
        jPanelConfig.add(jPanelConfigSelect, BorderLayout.WEST);


        jPanelConfigSwitch = new JPanel();
        jPanelConfig.add(jPanelConfigSwitch, BorderLayout.CENTER);
        jPanelConfigSwitchBorder = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "", TitledBorder.CENTER, TitledBorder.TOP);
        jPanelConfigSwitch.setBorder(jPanelConfigSwitchBorder);


        jPanelConfigDatabase = new JPanel();
        jPanelConfigDatabase.setLayout(new GridLayout(3, 1));
        JPanel jPanelConfigDatabase3 = new JPanel();
        jPanelConfigDatabase.add(jPanelConfigDatabase3);
        jPanelConfigDatabase3.add(new JLabel("URL"));
        jTextFieldDatabase = new JTextField(ini.getProperty("conn", defaultDatabase));
        jTextFieldDatabase.setPreferredSize(new Dimension(275, (int)jTextFieldDatabase.getPreferredSize().getHeight()));
        jPanelConfigDatabase3.add(jTextFieldDatabase);
        jPanelConfigDatabase3.add(new JLabel("      Driver"));
        jTextFieldDriver = new JTextField(ini.getProperty("driver", defaultDriver));
        jTextFieldDriver.setPreferredSize(new Dimension(200, (int)jTextFieldDriver.getPreferredSize().getHeight()));
        jPanelConfigDatabase3.add(jTextFieldDriver);
        jPanelConfigDatabase.add(new JPanel());
        JPanel jPanelConfigDatabase2 = new JPanel();
        jPanelConfigDatabase.add(jPanelConfigDatabase2);
        jPanelConfigDatabase2.add(new JLabel("Username"));
        jTextFieldUsername = new JTextField(ini.getProperty("user", defaultUsername));
        jTextFieldUsername.setPreferredSize(new Dimension(80, (int)jTextFieldUsername.getPreferredSize().getHeight()));
        jPanelConfigDatabase2.add(jTextFieldUsername);
        jPanelConfigDatabase2.add(new JLabel("      Password"));
        jTextFieldPassword = new JPasswordField(ini.getProperty("password", defaultPassword));
        jTextFieldPassword.setPreferredSize(new Dimension(80, (int)jTextFieldPassword.getPreferredSize().getHeight()));
        jPanelConfigDatabase2.add(jTextFieldPassword);


        jPanelConfigTerminals = new JPanel();
        jPanelConfigTerminals.setLayout(new GridLayout(2, 1));
        JPanel jPanelConfigTerminals1 = new JPanel();
        jPanelConfigTerminals.add(jPanelConfigTerminals1);
        jPanelConfigTerminals1.add(new JLabel("Number of Terminals"));
        jTextFieldNumTerminals = new JTextField(defaultNumTerminals);
        jTextFieldNumTerminals.setPreferredSize(new Dimension(28, (int)jTextFieldNumTerminals.getPreferredSize().getHeight()));
        jPanelConfigTerminals1.add(jTextFieldNumTerminals);
        jPanelConfigTerminals1.add(new JLabel("       Warehouses"));
        jTextFieldNumWarehouses = new JTextField(defaultNumWarehouses);
        jTextFieldNumWarehouses.setPreferredSize(new Dimension(28, (int)jTextFieldNumWarehouses.getPreferredSize().getHeight()));
        jPanelConfigTerminals1.add(jTextFieldNumWarehouses);
        jPanelConfigTerminals1.add(new JLabel("       Debug Messages"));
        jCheckBoxDebugMessages = new JCheckBox("", defaultDebugMessages);
        jPanelConfigTerminals1.add(jCheckBoxDebugMessages);
        JPanel jPanelConfigTerminals2 = new JPanel();
        jPanelConfigTerminals.add(jPanelConfigTerminals2);
        jPanelConfigTerminals2.add(new JLabel("Execute"));
        JPanel jPanelConfigTerminals21 = new JPanel();
        jPanelConfigTerminals21.setLayout(new GridLayout(2, 1));
        jPanelConfigTerminals2.add(jPanelConfigTerminals21);
        jTextFieldMinutes = new JTextField(defaultMinutes);
        jTextFieldMinutes.setPreferredSize(new Dimension(35, (int)jTextFieldMinutes.getPreferredSize().getHeight()));
        jPanelConfigTerminals21.add(jTextFieldMinutes);
        jTextFieldTransactionsPerTerminal = new JTextField(defaultTransactionsPerTerminal);
        jTextFieldTransactionsPerTerminal.setPreferredSize(new Dimension(35, (int)jTextFieldTransactionsPerTerminal.getPreferredSize().getHeight()));
        jPanelConfigTerminals21.add(jTextFieldTransactionsPerTerminal);
        JPanel jPanelConfigTerminals22 = new JPanel();
        jPanelConfigTerminals22.setLayout(new GridLayout(2, 1));
        jPanelConfigTerminals2.add(jPanelConfigTerminals22);
        ButtonGroup buttonGroupTimeNum = new ButtonGroup();
        jRadioButtonTime = new JRadioButton("Minutes", defaultRadioTime);
        buttonGroupTimeNum.add(jRadioButtonTime);
        jPanelConfigTerminals22.add(jRadioButtonTime);
        jRadioButtonNum = new JRadioButton("Transactions per terminal", !defaultRadioTime);
        buttonGroupTimeNum.add(jRadioButtonNum);
        jPanelConfigTerminals22.add(jRadioButtonNum);


        jPanelConfigWeights = new JPanel();
        jPanelConfigWeights.setLayout(new GridLayout(2, 1));
        jPanelConfigWeights.add(new JPanel());
        JPanel jPanelConfigWeights1 = new JPanel();
        jPanelConfigWeights.add(jPanelConfigWeights1);
        jPanelConfigWeights1.add(new JLabel("Payment %"));
        paymentWeight = new JTextField(defaultPaymentWeight);
        paymentWeight.setPreferredSize(new Dimension(28, (int)paymentWeight.getPreferredSize().getHeight()));
        jPanelConfigWeights1.add(paymentWeight);
        jPanelConfigWeights1.add(new JLabel("       Order-Status %"));
        orderStatusWeight = new JTextField(defaultOrderStatusWeight);
        orderStatusWeight.setPreferredSize(new Dimension(28, (int)orderStatusWeight.getPreferredSize().getHeight()));
        jPanelConfigWeights1.add(orderStatusWeight);
        jPanelConfigWeights1.add(new JLabel("       Delivery %"));
        deliveryWeight = new JTextField(defaultDeliveryWeight);
        deliveryWeight.setPreferredSize(new Dimension(28, (int)deliveryWeight.getPreferredSize().getHeight()));
        jPanelConfigWeights1.add(deliveryWeight);
        jPanelConfigWeights1.add(new JLabel("       Stock-Level %"));
        stockLevelWeight = new JTextField(defaultStockLevelWeight);
        stockLevelWeight.setPreferredSize(new Dimension(28, (int)stockLevelWeight.getPreferredSize().getHeight()));
        jPanelConfigWeights1.add(stockLevelWeight);


        jPanelConfigControls = new JPanel();
        jPanelConfigControls.setLayout(new GridLayout(2, 1));
        jPanelConfigControls.add(new JPanel());
        JPanel jPanelConfigControls1 = new JPanel();
        jPanelConfigControls.add(jPanelConfigControls1);
        jButtonCreateTerminals = new JButton("Create Terminals");
        jButtonCreateTerminals.setEnabled(true);
        jButtonCreateTerminals.addActionListener(this);
        jPanelConfigControls1.add(jButtonCreateTerminals);
        jButtonStartTransactions = new JButton("Start Transactions");
        jButtonStartTransactions.setEnabled(false);
        jButtonStartTransactions.addActionListener(this);
        jPanelConfigControls1.add(jButtonStartTransactions);
        jButtonStopTransactions = new JButton("Stop Transactions");
        jButtonStopTransactions.setEnabled(false);
        jButtonStopTransactions.addActionListener(this);
        jPanelConfigControls1.add(jButtonStopTransactions);


        setActiveConfigPanel(jPanelConfigDatabase, "Database");


        jPanelTerminalOutputs = new JPanel();
        jButtonPreviousTerminal = new JButton("< Previous");
        jButtonPreviousTerminal.addActionListener(this);
        jButtonNextTerminal = new JButton("Next >");
        jButtonNextTerminal.addActionListener(this);
        jPanelTerminalOutputs.setLayout(new BorderLayout());
        JPanel jPanelTerminalOutputs1 = new JPanel();
        jPanelTerminalOutputsLabel = new JLabel("    ");
        jPanelTerminalOutputs1.add(jButtonPreviousTerminal);
        jPanelTerminalOutputs1.add(jPanelTerminalOutputsLabel);
        jPanelTerminalOutputs1.add(jButtonNextTerminal);
        jPanelTerminalOutputs.add(jPanelTerminalOutputs1, BorderLayout.NORTH);
        jPanelOutputSwitch = new JPanel();
        jPanelOutputSwitch.setLayout(new BorderLayout());
        jPanelOutputSwitch.add(new JOutputArea());
        jPanelTerminalOutputs.add(jPanelOutputSwitch, BorderLayout.CENTER);


        jOutputAreaErrors = new JOutputArea();
        jOutputAreaControl = new JOutputArea
          ("+-------------------------------------------------------------+\n" +
           "      BenchmarkSQL v" + JTPCCVERSION + " (using JDBC Prepared Statements)\n" +
           "+-------------------------------------------------------------+\n" +
           " (c) 2003, Raul Barbosa (SourceForge.Net 'jTPCC' project)\n" +
           " (c) 2004-2006, Denis Lussier\n" +
           "+-------------------------------------------------------------+\n\n");
        jPanelControl.add(jOutputAreaControl, BorderLayout.CENTER);
        jLabelInformation = new JLabel("", JLabel.CENTER);
        updateInformationLabel();


        jTabbedPane = new JTabbedPane();
        jTabbedPane.addTab("Control", imageIconDot, jPanelControl);


        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(jTabbedPane, BorderLayout.CENTER);
        this.getContentPane().add(jLabelInformation, BorderLayout.SOUTH);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {
        updateInformationLabel();
        if(e.getSource() == jButtonCreateTerminals)
        {
            removeAllTerminals();
            stopInputAreas();
            fastNewOrderCounter = 0;


            try
            {
                String driver = jTextFieldDriver.getText();
                jOutputAreaControl.println("");
                printMessage("Loading database driver: \'" + driver + "\'...");
                Class.forName(driver);
                databaseDriverLoaded = true;
            }
            catch(Exception ex)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -