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

📄 jtpcc.java

📁 业界最为经典的SQL性能测试工具
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            }
        }
    }

    public void signalTerminalEnded(jTPCCTerminal terminal, long countNewOrdersExecuted)
    {
        synchronized(terminals)
        {
            boolean found = false;
            terminalsStarted--;
            for(int i = 0; i < terminals.length && !found; i++)
            {
                if(terminals[i] == terminal)
                {
                    terminals[i] = null;
                    terminalNames[i] = "(" + terminalNames[i] + ")";
                    if(i == currentlyDisplayedTerminal)
                    {
                        jPanelTerminalOutputsLabel.setText("   " + terminalNames[i] + "   ");
                        jPanelTerminalOutputsLabel.repaint();
                    }
                    newOrderCounter += countNewOrdersExecuted;
                    found = true;
                }
            }
        }

        if(terminalsStarted == 0)
        {
            jButtonStopTransactions.setEnabled(false);
            sessionEnd = getCurrentTime();
            sessionEndTimestamp = System.currentTimeMillis();
            sessionEndTargetTime = -1;
            printMessage("All terminals finished executing " + sessionEnd);
            endReport();
            terminalsBlockingExit = false;
            if(jOutputAreaErrors.getText().length() != 0)
            {
                jTabbedPane.setTitleAt(1, "** ERRORS **");
                printMessage("There were errors on this session!");
            }
            printMessage("Session #" + sessionCount + " finished!");
            restartInputAreas();
        }
    }

    public void signalTerminalEndedTransaction(String terminalName, String transactionType, long executionTime, String comment, int newOrder)
    {
        if(comment == null) comment = "None";

        try
        {
            synchronized(printStreamReport)
            {
                printStreamReport.println("" + transactionCount + "\t" + terminalName + "\t" + transactionType + "\t" + executionTime + "\t\t" + comment);
                transactionCount++;
                fastNewOrderCounter += newOrder;
            }
        }
        catch(Exception e)
        {
            errorMessage("An error occurred writing the report!");
        }

        if(sessionEndTargetTime != -1 && System.currentTimeMillis() > sessionEndTargetTime)
        {
            signalTerminalsRequestEnd(true);
        }

        updateInformationLabel();
    }

    private void endReport()
    {
        try
        {
            printStreamReport.println("\n\nMeasured tpmC\t=60000*" + newOrderCounter + "/" + (sessionEndTimestamp - sessionStartTimestamp));
            printStreamReport.println("\nSession Start\t" + sessionStart + "\nSession End\t" + sessionEnd);
            printStreamReport.println("Transaction Count\t" + (transactionCount-1));
            printStreamReport.close();
            fileOutputStream.close();
        }
        catch(IOException e)
        {
            errorMessage("An error occurred writing the report!");
        }
    }

    private void setActiveConfigPanel(JPanel panel, String title)
    {
        jPanelControl.invalidate();
        jPanelConfigSwitch.invalidate();
        jPanelConfigSwitch.removeAll();
        jPanelConfigSwitch.add(panel);
        ((TitledBorder)jPanelConfigSwitch.getBorder()).setTitle(" "+title+" ");
        jPanelControl.validate();
        jPanelConfigSwitch.validate();
        jPanelControl.repaint();
        jPanelConfigSwitch.repaint();
    }

    private void setActiveTerminalOutput(int terminalNumber)
    {
        if(terminals != null)
        {
            synchronized(terminals)
            {
                jPanelTerminalOutputs.invalidate();
                jPanelOutputSwitch.invalidate();
                jPanelOutputSwitch.removeAll();
                jPanelTerminalOutputsLabel.setText("   " + terminalNames[terminalNumber] + "   ");
                jPanelTerminalOutputsLabel.repaint();
                currentlyDisplayedTerminal = terminalNumber;
                jPanelOutputSwitch.add(terminalOutputAreas[terminalNumber], BorderLayout.CENTER);
                jPanelTerminalOutputs.validate();
                jPanelOutputSwitch.validate();
                jPanelTerminalOutputs.repaint();
                jPanelOutputSwitch.repaint();
            }
        }
    }

    private void setNextActiveTerminal()
    {
        int next = currentlyDisplayedTerminal + 1;
        if(next >= terminals.length) next = 0;
        setActiveTerminalOutput(next);
    }

    private void setPreviousActiveTerminal()
    {
        int previous = currentlyDisplayedTerminal - 1;
        if(previous < 0) previous = terminals.length -1;
        setActiveTerminalOutput(previous);
    }

    private void printMessage(String message)
    {
        if(OUTPUT_MESSAGES) jOutputAreaControl.println("[BenchmarkSQL] " + message);
    }

    private void errorMessage(String message)
    {
        jOutputAreaControl.println("[ERROR] " + message);
    }

    private void exit()
    {
        if(!terminalsBlockingExit)
        {
            System.exit(0);
        }
        else
        {
            printMessage("Disable all terminals before quitting!");
        }
    }

    private void removeAllTerminals()
    {
        jTabbedPane.removeAll();
        jTabbedPane.addTab("Control", imageIconDot, jPanelControl);
        terminals = null;
        System.gc();
    }

    private void stopInputAreas()
    {
        terminalsBlockingExit = true;
        jButtonCreateTerminals.setEnabled(false);
        jTextFieldTransactionsPerTerminal.setEnabled(false);
        jTextFieldMinutes.setEnabled(false);
        jRadioButtonTime.setEnabled(false);
        jRadioButtonNum.setEnabled(false);
        jTextFieldNumTerminals.setEnabled(false);
        jTextFieldNumWarehouses.setEnabled(false);
        jCheckBoxDebugMessages.setEnabled(false);
        jTextFieldDatabase.setEnabled(false);
        jTextFieldUsername.setEnabled(false);
        jTextFieldPassword.setEnabled(false);
        jTextFieldDriver.setEnabled(false);
        paymentWeight.setEnabled(false);
        orderStatusWeight.setEnabled(false);
        deliveryWeight.setEnabled(false);
        stockLevelWeight.setEnabled(false);
        this.repaint();
    }

    private void restartInputAreas()
    {
        terminalsBlockingExit = false;
        jButtonCreateTerminals.setEnabled(true);
        jTextFieldTransactionsPerTerminal.setEnabled(true);
        jTextFieldMinutes.setEnabled(true);
        jRadioButtonTime.setEnabled(true);
        jRadioButtonNum.setEnabled(true);
        jTextFieldNumTerminals.setEnabled(true);
        jTextFieldNumWarehouses.setEnabled(true);
        jCheckBoxDebugMessages.setEnabled(true);
        jTextFieldDatabase.setEnabled(true);
        jTextFieldUsername.setEnabled(true);
        jTextFieldPassword.setEnabled(true);
        jTextFieldDriver.setEnabled(true);
        jButtonStopTransactions.setEnabled(false);
        paymentWeight.setEnabled(true);
        orderStatusWeight.setEnabled(true);
        deliveryWeight.setEnabled(true);
        stockLevelWeight.setEnabled(true);
        this.repaint();
    }

    private void updateInformationLabel()
    {
        String informativeText = "";
        long currTimeMillis = System.currentTimeMillis();

        if(fastNewOrderCounter != 0)
        {
            double tpmC = (6000000*fastNewOrderCounter/(currTimeMillis - sessionStartTimestamp))/100.0;
            informativeText = "Running Average tpmC: " + tpmC + "      ";
        }

        if(currTimeMillis > sessionNextTimestamp) 
        {
            sessionNextTimestamp += 5000;  /* check this every 5 seconds */
            recentTpmC = (fastNewOrderCounter - sessionNextKounter) * 12; 
            sessionNextKounter = fastNewOrderCounter;
        }

        if(fastNewOrderCounter != 0)
        {
            informativeText += "Current tpmC: " + recentTpmC + "     ";
        }

        long freeMem = Runtime.getRuntime().freeMemory() / (1024*1024);
        long totalMem = Runtime.getRuntime().totalMemory() / (1024*1024);
        informativeText += "Memory Usage: " + (totalMem - freeMem) + "MB / " + totalMem + "MB";

        synchronized(jLabelInformation)
        {
            jLabelInformation.setText(informativeText);
            jLabelInformation.repaint();
        }
    }

    private long randomNumber(long min, long max)
    {
        return (long)(random.nextDouble() * (max-min+1) + min);
    }

    private String getCurrentTime()
    {
        return dateFormat.format(new java.util.Date());
    }

    private String getFileNameSuffix()
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        return dateFormat.format(new java.util.Date());
    }

    public void windowClosing(WindowEvent e)
    {
        exit();
    }

    public void windowOpened(WindowEvent e)
    {
    }

    public void windowClosed(WindowEvent e)
    {
    }

    public void windowIconified(WindowEvent e)
    {
    }

    public void windowDeiconified(WindowEvent e)
    {
    }

    public void windowActivated(WindowEvent e)
    {
    }

    public void windowDeactivated(WindowEvent e)
    {
    }
}

⌨️ 快捷键说明

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