📄 jtpcc.java
字号:
}
}
}
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 + -