ndt-dev - [ndt-dev] [ndt] r880 committed - Introduced proper package naming to Admin and jAnalyze components
Subject: NDT-DEV email list created
List archive
[ndt-dev] [ndt] r880 committed - Introduced proper package naming to Admin and jAnalyze components
Chronological Thread
- From:
- To:
- Subject: [ndt-dev] [ndt] r880 committed - Introduced proper package naming to Admin and jAnalyze components
- Date: Fri, 07 Feb 2014 10:50:03 +0000
Revision: 880
Author:
Date: Fri Feb 7 10:49:25 2014 UTC
Log: Introduced proper package naming to Admin and jAnalyze components
http://code.google.com/p/ndt/source/detail?r=880
Added:
/branches/AppletIssue92/Admin/src
/branches/AppletIssue92/Admin/src/edu
/branches/AppletIssue92/Admin/src/edu/internet2
/branches/AppletIssue92/Admin/src/edu/internet2/ndt
/branches/AppletIssue92/Admin/src/edu/internet2/ndt/Admin.java
/branches/AppletIssue92/Applet/src
/branches/AppletIssue92/flash-client/Makefile.am
/branches/AppletIssue92/janalyze/src/edu
/branches/AppletIssue92/janalyze/src/edu/internet2
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/DBConfFrame.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/FilterFrame.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/Helpers.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/JAnalyze.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/LoadingDBFrame.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/LoadingFrame.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/MaxPeakInfo.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/MinPeakInfo.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/PeakInfo.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/PropertyListener.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/ResultsContainer.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/ResultsList.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SimpleTextPane.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SnaplogFrame.java
/branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SwingWorker.java
Deleted:
/branches/AppletIssue92/Admin/Admin.java
/branches/AppletIssue92/Applet/Message.java
/branches/AppletIssue92/Applet/MessageType.java
/branches/AppletIssue92/Applet/NDTConstants.java
/branches/AppletIssue92/Applet/NDTUtils.java
/branches/AppletIssue92/Applet/NewFrame.java
/branches/AppletIssue92/Applet/OsfwWorker.java
/branches/AppletIssue92/Applet/Protocol.java
/branches/AppletIssue92/Applet/ResultsTextPane.java
/branches/AppletIssue92/Applet/StatusPanel.java
/branches/AppletIssue92/Applet/Tcpbw100.java
/branches/AppletIssue92/Applet/Tcpbw100_msgs_ca_ES.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_el_GR.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_en_US.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_fr_FR.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_nb_NO.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_nl_NL.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_pt_BR.properties
/branches/AppletIssue92/Applet/Tcpbw100_msgs_ru_RU.properties
/branches/AppletIssue92/Applet/UserAgentTools.java
/branches/AppletIssue92/janalyze/src/DBConfFrame.java
/branches/AppletIssue92/janalyze/src/FilterFrame.java
/branches/AppletIssue92/janalyze/src/Helpers.java
/branches/AppletIssue92/janalyze/src/JAnalyze.java
/branches/AppletIssue92/janalyze/src/LoadingDBFrame.java
/branches/AppletIssue92/janalyze/src/LoadingFrame.java
/branches/AppletIssue92/janalyze/src/MaxPeakInfo.java
/branches/AppletIssue92/janalyze/src/MinPeakInfo.java
/branches/AppletIssue92/janalyze/src/PeakInfo.java
/branches/AppletIssue92/janalyze/src/PropertyListener.java
/branches/AppletIssue92/janalyze/src/ResultsContainer.java
/branches/AppletIssue92/janalyze/src/ResultsList.java
/branches/AppletIssue92/janalyze/src/SimpleTextPane.java
/branches/AppletIssue92/janalyze/src/SnaplogFrame.java
/branches/AppletIssue92/janalyze/src/SwingWorker.java
Modified:
/branches/AppletIssue92
/branches/AppletIssue92/Admin/Makefile.am
/branches/AppletIssue92/Applet/MANIFEST.MF
/branches/AppletIssue92/Applet/Makefile.am
/branches/AppletIssue92/Makefile.am
/branches/AppletIssue92/admin.html
/branches/AppletIssue92/configure.ac
/branches/AppletIssue92/janalyze/MANIFEST.MF
/branches/AppletIssue92/janalyze/Makefile.am
=======================================
--- /dev/null
+++ /branches/AppletIssue92/Admin/src/edu/internet2/ndt/Admin.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,260 @@
+package edu.internet2.ndt;
+
+/* This applet provides an administrator view of the NDT usage
+ * statistics. It was originally developed for the SC-03 conference.
+ * An admin script will run to collect the necessary data. This data
+ * is then feed into this applet via the PARM/VALUE pairs in the html
+ * file.
+ *
+ * This applet simply draws the bar graph that appears on the
+ * html page.
+ *
+ * Admin.java by Richard A. Carlson - September 25, 2003
+ */
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.awt.font.*;
+import java.awt.image.*;
+import java.applet.Applet;
+
+public class Admin extends Applet {
+
+ Color fill, outline, textcolor;
+ Font font;
+ FontMetrics metrics;
+ private String TARGET1 = "Fault";
+ private String TARGET2 = "RTT";
+ private String TARGET3 = "Dial-up";
+ private String TARGET4 = "T1";
+ private String TARGET5 = "Enet";
+ private String TARGET6 = "T3";
+ private String TARGET7 = "FastE";
+ private String TARGET8 = "OC-12";
+ private String TARGET9 = "GigE";
+ private String TARGET10 = "OC-48";
+ private String TARGET11 = "tenGE";
+ private String TARGET12 = "Total";
+
+
+ public void init() {
+
+ fill = new Color(0,255,128); // (RGB values)
+ outline = Color.black;
+
+ font = new Font("SansSerif", Font.PLAIN, 12);
+ metrics = this.getFontMetrics(font);
+ }
+
+
+ public void paint(Graphics g) {
+
+ int Fault, RTT, Dialup, T1, Enet, T3, FastE;
+ int OC12, GigE, OC48, tenGE, Total, i;
+ int f;
+ String val;
+
+ val = getParameter(TARGET1);
+ // System.err.println("Fault = " + val);
+ Fault = Integer.parseInt(val);
+ val = getParameter(TARGET2);
+ // System.err.println("RTT = " + val);
+ RTT = Integer.parseInt(val);
+ val = getParameter(TARGET3);
+ // System.err.println("Dialup = " + val);
+ Dialup = Integer.parseInt(val);
+ val = getParameter(TARGET4);
+ // System.err.println("T1 = " + val);
+ T1 = Integer.parseInt(val);
+ val = getParameter(TARGET5);
+ // System.err.println("Enet = " + val);
+ Enet = Integer.parseInt(val);
+ val = getParameter(TARGET6);
+ // System.err.println("T3 = " + val);
+ T3 = Integer.parseInt(val);
+ val = getParameter(TARGET7);
+ // System.err.println("FastE = " + val);
+ FastE = Integer.parseInt(val);
+ val = getParameter(TARGET8);
+ // System.err.println("OC12 = " + val);
+ OC12 = Integer.parseInt(val);
+ val = getParameter(TARGET9);
+ // System.err.println("GigE = " + val);
+ GigE = Integer.parseInt(val);
+ val = getParameter(TARGET10);
+ // System.err.println("OC48 = " + val);
+ OC48 = Integer.parseInt(val);
+ val = getParameter(TARGET11);
+ // System.err.println("tenGE = " + val);
+ tenGE = Integer.parseInt(val);
+ val = getParameter(TARGET12);
+ Total = Integer.parseInt(val);
+
+ g.setFont(font);
+
+ // draw X/Y axis lines with tick marks on the Y axis
+ g.setColor(outline);
+ g.drawLine(60, 350, 60, 50);
+ g.drawLine(45, 350, 510, 350);
+ g.drawString("0", 30, 355);
+ g.drawLine(45, 290, 60, 290);
+ g.drawString("20", 28, 295);
+ g.drawLine(45, 230, 60, 230);
+ g.drawString("40", 28, 235);
+ g.drawLine(45, 170, 60, 170);
+ g.drawString("60", 28, 175);
+ g.drawLine(45, 110, 60, 110);
+ g.drawString("80", 28, 115);
+ g.drawLine(45, 50, 60, 50);
+ g.drawString("100", 23, 55);
+
+ // draw green boxes representing bars for each possible link type
+ f = (int)(((double)Fault/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(70, (349 - f), 30, (1 + f));
+ // g.drawString("Fault", 70, 370);
+ g.setColor(outline);
+ g.drawRect(70, (349 - f), 30, (1 + f));
+ g.drawString("Fault", 70, 370);
+ if (Fault > 0) {
+ val = "(" + Integer.toString(Fault) + ")";
+ g.drawString(val, (70 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)RTT/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(110, (349 - f), 30, (1 + f));
+ // g.drawString("RTT", 110, 385);
+ g.setColor(outline);
+ g.drawRect(110, (349 - f), 30, (1 + f));
+ g.drawString("RTT", 110, 385);
+ if (RTT > 0) {
+ val = "(" + Integer.toString(RTT) + ")";
+ g.drawString(val, (110 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)Dialup/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(150, (349 - f), 30, (1 + f));
+ // g.drawString("Dial-up", 150, 370);
+ g.setColor(outline);
+ g.drawRect(150, (349 - f), 30, (1 + f));
+ g.drawString("Dial-up", 150, 370);
+ if (Dialup > 0) {
+ val = "(" + Integer.toString(Dialup) + ")";
+ g.drawString(val, (150 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)T1/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(190, (349 - f), 30, (1 + f));
+ // g.drawString("Cable/DSL", 180, 385);
+ g.setColor(outline);
+ g.drawRect(190, (349 - f), 30, (1 + f));
+ g.drawString("Cable/DSL", 180, 385);
+ if (T1 > 0) {
+ val = "(" + Integer.toString(T1) + ")";
+ g.drawString(val, (190 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)Enet/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(230, (349 - f), 30, (1 + f));
+ // g.drawString("Ethernet", 230, 370);
+ g.setColor(outline);
+ g.drawRect(230, (349 - f), 30, (1 + f));
+ g.drawString("Ethernet", 230, 370);
+ if (Enet > 0) {
+ val = "(" + Integer.toString(Enet) + ")";
+ g.drawString(val, (230 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)T3/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(270, (349 - f), 30, (1 + f));
+ // g.drawString("T3/DS3", 270, 385);
+ g.setColor(outline);
+ g.drawRect(270, (349 - f), 30, (1 + f));
+ g.drawString("T3/DS3", 270, 385);
+ if (T3 > 0) {
+ i = (int)(((double)T3/300)*(double)Total) + 1;
+ val = "(" + Integer.toString(T3) + ")";
+ g.drawString(val, (270 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)FastE/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(310, (349 - f), 30, (1 + f));
+ // g.drawString("FastEnet", 310, 370);
+ g.setColor(outline);
+ g.drawRect(310, (349 - f), 30, (1 + f));
+ g.drawString("FastEnet", 310, 370);
+ if (FastE > 0) {
+ val = "(" + Integer.toString(FastE) + ")";
+ g.drawString(val, (310 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)OC12/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(350, (349 - f), 30, (1 + f));
+ // g.drawString("OC-12", 350, 385);
+ g.setColor(outline);
+ g.drawRect(350, (349 - f), 30, (1 + f));
+ g.drawString("OC-12", 350, 385);
+ if (OC12 > 0) {
+ val = "(" + Integer.toString(OC12) + ")";
+ g.drawString(val, (360 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)GigE/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(390, (349 - f), 30, (1 + f));
+ // g.drawString("GigEnet", 390, 370);
+ g.setColor(outline);
+ g.drawRect(390, (349 - f), 30, (1 + f));
+ g.drawString("GigEnet", 390, 370);
+ if (GigE > 0) {
+ val = "(" + Integer.toString(GigE) + ")";
+ g.drawString(val, (390 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)OC48/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(430, (349 - f), 30, (1 + f));
+ // g.drawString("OC-48", 430, 385);
+ g.setColor(outline);
+ g.drawRect(430, (349 - f), 30, (1 + f));
+ g.drawString("OC-48", 430, 385);
+ if (OC48 > 0) {
+ val = "(" + Integer.toString(OC48) + ")";
+ g.drawString(val, (430 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ f = (int)(((double)tenGE/(double)Total)*300);
+ g.setColor(fill);
+ g.fillRect(470, (349 - f), 30, (1 + f));
+ // g.drawString("10 GigE", 470, 370);
+ g.setColor(outline);
+ g.drawRect(470, (349 - f), 30, (1 + f));
+ g.drawString("10 GigE", 470, 370);
+ if (tenGE > 0) {
+ val = "(" + Integer.toString(tenGE) + ")";
+ g.drawString(val, (470 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
+ }
+
+ font = new Font("SansSerif", Font.BOLD, 18);
+ g.setFont(font);
+ g.setColor(outline);
+ g.drawString("Bottleneck Link Type (Sub-Total)", 150, 40);
+ font = new Font("SansSerif", Font.BOLD, 16);
+ g.setFont(font);
+ g.drawString("P", 5, 140);
+ g.drawString("E", 5, 160);
+ g.drawString("R", 5, 180);
+ g.drawString("C", 5, 200);
+ g.drawString("E", 5, 220);
+ g.drawString("N", 5, 240);
+ g.drawString("T", 5, 260);
+ }
+
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/flash-client/Makefile.am Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,47 @@
+#########################################################################
+# #
+# Copyright (C) 2014 #
+# Internet2 #
+# All Rights Reserved #
+# #
+#########################################################################
+#
+# File: Makefile.am
+#
+# Author: Sebastian Kostuch
+#
+# Date: Tue Feb 4 13:43:12 CET 2014
+#
+# Description:
+
+NDTMXMLCFLAGS = -o dist/FlashClt.swf -load-config+=ndt-flash-config.xml
+TEMPDIRS = dist
+
+ndtdir = $(prefix)/ndt
+
+ndt_DATA = dist/FlashClt.swf
+FlashCltdir = $(ndtdir)
+
+noinst_PROGRAMS = FlashClt.swf
+
+FlashClt_swf_SOURCES = src/GUI.as src/Handshake.as src/Main.as src/Message.as \
+ src/MessageType.as src/NDTConstants.as
src/NDTPController.as \
+ src/ndt_test_results.as src/NDTUtils.as
src/TestC2S.as \
+ src/TestMETA.as src/TestResults.as
src/TestResultsUtils.as \
+ src/TestS2C.as src/TestType.as src/UserAgentTools.as
+
+dist:
+ mkdir -p dist
+
+FlashClt.swf: $(TEMPDIRS)
+ $(NDTMXMLC) src/Main.as $(NDTMXMLCFLAGS);
+
+mostlyclean-generic:
+ rm -rf $(TEMPDIRS) *~
+
+EXTRA_DIST = README AUTHORS COPYING ndt-flash-config.xml assets/hover.png assets/mlab-logo.png \
+ src/locale/ca_ES/DisplayMessages.properties src/locale/el_GR/DisplayMessages.properties \
+ src/locale/en_US/DisplayMessages.properties src/locale/fr_FR/DisplayMessages.properties \
+ src/locale/nb_NO/DisplayMessages.properties src/locale/nl_NL/DisplayMessages.properties \
+ src/locale/pt_BR/DisplayMessages.properties src/locale/ru_RU/DisplayMessages.properties
+
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/DBConfFrame.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,78 @@
+package edu.internet2.ndt;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.BoxLayout;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import javax.swing.JPasswordField;
+import java.awt.Container;
+
+public class DBConfFrame extends JFrame
+{
+ private static final long serialVersionUID = 1L;
+ private JTextField driver = new JTextField(20);
+ private JTextField dsn = new JTextField(20);
+ private JTextField uid = new JTextField(20);
+ private JPasswordField pwd = new JPasswordField(20);
+
+ public DBConfFrame(JAnalyze mainWindow) {
+
+ Container cp = getContentPane();
+ cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));
+ JPanel panel = new JPanel();
+ JPanel tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Driver:"));
+ driver.setText(mainWindow.getProperties().getProperty("driver", "com.mysql.jdbc.Driver"));
+ driver.getDocument().addDocumentListener(new PropertyListener(mainWindow, "driver"));
+ panel.add(driver);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("DSN:"));
+ dsn.setText(mainWindow.getProperties().getProperty("dsn", "jdbc:mysql://localhost/test"));
+ dsn.getDocument().addDocumentListener(new PropertyListener(mainWindow, "dsn"));
+ panel.add(dsn);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("UID:"));
+ uid.setText(mainWindow.getProperties().getProperty("uid", ""));
+ uid.getDocument().addDocumentListener(new PropertyListener(mainWindow, "uid"));
+ panel.add(uid);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("PWD:"));
+ pwd.setText(mainWindow.getProperties().getProperty("pwd", ""));
+ pwd.getDocument().addDocumentListener(new PropertyListener(mainWindow, "pwd"));
+ panel.add(pwd);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+
+ setSize(270, 150);
+ }
+
+ public String getDriver() {
+ return driver.getText();
+ }
+
+ public String getDSN() {
+ return dsn.getText();
+ }
+
+ public String getUID() {
+ return uid.getText();
+ }
+
+ public String getPWD() {
+ return new String(pwd.getPassword());
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/FilterFrame.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,301 @@
+package edu.internet2.ndt;
+
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JPanel;
+import javax.swing.BoxLayout;
+import javax.swing.JCheckBox;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JComboBox;
+import javax.swing.border.TitledBorder;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Vector;
+import java.util.HashSet;
+import java.util.StringTokenizer;
+
+import java.awt.Dimension;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class FilterFrame extends JFrame
+{
+ private JAnalyze mainWindow;
+ private static final long serialVersionUID = 1L;
+ private Collection<ResultsContainer> results;
+ private Collection<String> disabled = new HashSet<String>();
+
+ private final Map<String, Integer> ips = new HashMap<String, Integer>();
+ private int mismatchFilter;
+ private int cableFaultFilter = 2;
+ private int congestionFilter = 2;
+ private int duplexFilter = 2;
+ private int newCongestionFilter = 2;
+ private int initialPeakSpeedFilter = 4;
+
+ public FilterFrame(JAnalyze mainWindow, Collection<ResultsContainer> results) {
+ this.mainWindow = mainWindow;
+ this.results = results;
+
+ resultsChange();
+
+ StringTokenizer st = new StringTokenizer(mainWindow.getProperties().getProperty("disabled", ""), ",");
+ while (st.hasMoreTokens()) {
+ disabled.add(st.nextToken());
+ }
+
+ setSize(400, 350);
+ }
+
+ public Collection<ResultsContainer> getResults() {
+ Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
+ for (ResultsContainer result : results) {
+ if (mismatchFilter != 2 && result.getMismatch() != mismatchFilter)
+ continue;
+ if (cableFaultFilter != 2 && result.getCable() != cableFaultFilter)
+ continue;
+ if (congestionFilter != 2 && result.getCongestion() != congestionFilter)
+ continue;
+ if (duplexFilter != 2 && result.getDuplex() != duplexFilter)
+ continue;
+ if (newCongestionFilter != 2 && result.getNewCongestion() != newCongestionFilter)
+ continue;
+ if (initialPeakSpeedFilter != 4 && result.getInitialPeakSpeedEquality() != initialPeakSpeedFilter)
+ continue;
+ if (ips.get(result.getIP()).equals(1)) {
+ newResults.add(result);
+ }
+ }
+ return newResults;
+ }
+
+ public void resultsChange() {
+ Container cp = getContentPane();
+ cp.removeAll();
+
+ Map<String, Integer> oldIPs = new HashMap<String, Integer>(ips);
+
+ ips.clear();
+ for (ResultsContainer result : results) {
+ if (!oldIPs.containsKey(result.getIP())) {
+ ips.put(result.getIP(), disabled.contains(result.getIP()) ? 0 : 1);
+ }
+ else {
+ ips.put(result.getIP(), oldIPs.get(result.getIP()));
+ }
+ }
+
+ cp.setLayout(new BorderLayout());
+ JPanel leftPanel = new JPanel();
+ leftPanel.setLayout(new BorderLayout());
+ final JPanel ipsPanel = new JPanel();
+ ipsPanel.setBorder(new TitledBorder("Show IPs"));
+ ipsPanel.setLayout(new BoxLayout(ipsPanel, BoxLayout.Y_AXIS));
+ if (ips.keySet().size() == 0) {
+ ipsPanel.add(new JLabel(" "));
+ }
+ else {
+ JPanel tmpPanel = new JPanel();
+ tmpPanel.setBorder(new TitledBorder("select IPs"));
+ JButton allButton = new JButton("all");
+ allButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ for (Component component : ipsPanel.getComponents()) {
+ JCheckBox checkBox = (JCheckBox) component;
+ checkBox.setSelected(true);
+ }
+ }
+ });
+ allButton.setPreferredSize(new Dimension(55, 20));
+ JButton noneButton = new JButton("none");
+ noneButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ for (Component component : ipsPanel.getComponents()) {
+ JCheckBox checkBox = (JCheckBox) component;
+ checkBox.setSelected(false);
+ }
+ }
+ });
+ noneButton.setPreferredSize(new Dimension(70, 20));
+ tmpPanel.add(allButton);
+ tmpPanel.add(noneButton);
+ leftPanel.add(tmpPanel, BorderLayout.SOUTH);
+ }
+ for (String ip : ips.keySet()) {
+ JCheckBox checkBox = new JCheckBox(ip, ips.get(ip) == 1) {
+ private static final long serialVersionUID =
1L;
+
+ public void setSelected(boolean value) {
+ super.setSelected(value);
+ fireActionPerformed(new ActionEvent(FilterFrame.this,
+ ActionEvent.ACTION_PERFORMED,
+ ""));
+ }
+ };
+ checkBox.addActionListener( new IPCheckBoxActionListener(checkBox, ip, disabled));
+ ipsPanel.add(checkBox);
+ }
+ leftPanel.add(new JScrollPane(ipsPanel));
+ cp.add(leftPanel, BorderLayout.WEST);
+
+ JPanel applyPanel = new JPanel();
+ JButton applyButton = new JButton("Apply");
+ applyButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.rebuildResultsList();
+ }
+ });
+ applyPanel.add(applyButton);
+ cp.add(applyPanel, BorderLayout.SOUTH);
+
+ JPanel optPanel = new JPanel();
+ optPanel.setLayout(new BoxLayout(optPanel, BoxLayout.Y_AXIS));
+ String[] optStrings = {"no", "yes", "both"};
+
+ JComboBox mismatchBox = new JComboBox(optStrings);
+ mismatchBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mismatchFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("mismatchFilter", Integer.toString(mismatchFilter));
+ }
+ });
+
+ mismatchFilter = Integer.parseInt(mainWindow.getProperties().getProperty("mismatchFilter", "2"));
+ mismatchBox.setSelectedIndex(mismatchFilter);
+ JPanel horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("Mismatch: "));
+ horizontalPanel.add(mismatchBox);
+ optPanel.add(horizontalPanel);
+
+ JComboBox cableFaultBox = new JComboBox(optStrings);
+ cableFaultBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ cableFaultFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("cableFaultFilter", Integer.toString(cableFaultFilter));
+ }
+ });
+
+ cableFaultFilter = Integer.parseInt(mainWindow.getProperties().getProperty("cableFaultFilter", "2"));
+ cableFaultBox.setSelectedIndex(cableFaultFilter);
+ horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("Cable fault: "));
+ horizontalPanel.add(cableFaultBox);
+ optPanel.add(horizontalPanel);
+
+ JComboBox congestionBox = new JComboBox(optStrings);
+ congestionBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ congestionFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("congestionFilter", Integer.toString(congestionFilter));
+ }
+ });
+
+ congestionFilter = Integer.parseInt(mainWindow.getProperties().getProperty("congestionFilter", "2"));
+ congestionBox.setSelectedIndex(congestionFilter);
+ horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("Congestion: "));
+ horizontalPanel.add(congestionBox);
+ optPanel.add(horizontalPanel);
+
+ JComboBox duplexBox = new JComboBox(optStrings);
+ duplexBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ duplexFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("duplexFilter", Integer.toString(duplexFilter));
+ }
+ });
+
+ duplexFilter = Integer.parseInt(mainWindow.getProperties().getProperty("duplexFilter", "2"));
+ duplexBox.setSelectedIndex(duplexFilter);
+ horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("Duplex: "));
+ horizontalPanel.add(duplexBox);
+ optPanel.add(horizontalPanel);
+
+ JComboBox newCongestionBox = new JComboBox(optStrings);
+ newCongestionBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ newCongestionFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("newCongestionFilter",
+ Integer.toString(newCongestionFilter));
+ }
+ });
+
+ newCongestionFilter=Integer.parseInt(mainWindow.getProperties().getProperty("newCongestionFilter","2"));
+ newCongestionBox.setSelectedIndex(newCongestionFilter);
+ horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("New congestion: "));
+ horizontalPanel.add(newCongestionBox);
+ optPanel.add(horizontalPanel);
+
+ JComboBox initialPeakSpeedBox = new JComboBox(new String[] {"n/a", "equal", "greater", "less", "all"});
+ initialPeakSpeedBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ initialPeakSpeedFilter = ((JComboBox) e.getSource()).getSelectedIndex();
+ mainWindow.getProperties().setProperty("initialPeakSpeedFilter",
+ Integer.toString(initialPeakSpeedFilter));
+ }
+ });
+
+ initialPeakSpeedFilter=Integer.parseInt(mainWindow.getProperties().getProperty("initialPeakSpeedFilter","4"));
+ initialPeakSpeedBox.setSelectedIndex(initialPeakSpeedFilter);
+ horizontalPanel = new JPanel();
+ horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
+ horizontalPanel.add(new JLabel("Initial peak speed: "));
+ horizontalPanel.add(initialPeakSpeedBox);
+ optPanel.add(horizontalPanel);
+
+ JPanel tmpPanel = new JPanel();
+ tmpPanel.add(new JScrollPane(optPanel));
+ cp.add(tmpPanel);
+
+ validate();
+ cp.repaint();
+ }
+
+ class IPCheckBoxActionListener implements ActionListener {
+ private JCheckBox checkBox;
+ private String ip;
+ private Collection<String> disabled;
+
+ IPCheckBoxActionListener(JCheckBox checkBox, String ip, Collection<String> disabled) {
+ this.checkBox = checkBox;
+ this.ip = ip;
+ this.disabled = disabled;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (checkBox.isSelected()) {
+ ips.put(ip, 1);
+ disabled.remove(ip);
+ }
+ else {
+ ips.put(ip, 0);
+ if (!disabled.contains(ip)) {
+ disabled.add(ip);
+ }
+ }
+ StringBuffer newDisabled = new StringBuffer();
+ boolean first = true;
+ for (String ip : disabled) {
+ if (!first) {
+ newDisabled.append(",");
+ }
+ newDisabled.append(ip);
+ first = false;
+ }
+ mainWindow.getProperties().setProperty("disabled", newDisabled.toString());
+ }
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/Helpers.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,8 @@
+package edu.internet2.ndt;
+
+public class Helpers {
+ public static String formatDouble(double val, int precision) {
+ String format_string = "%1$." + precision + "f";
+ return String.format(format_string, val);
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/JAnalyze.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,683 @@
+package edu.internet2.ndt;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.ListSelectionModel;
+import javax.swing.UIManager;
+import javax.swing.JFileChooser;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.JTextArea;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Collection;
+import java.util.Vector;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import de.progra.charting.DefaultChart;
+import de.progra.charting.model.EditableChartDataModel;
+import de.progra.charting.render.LineChartRenderer;
+import de.progra.charting.swing.ChartPanel;
+
+public class JAnalyze extends JFrame
+{
+ private static final long serialVersionUID = 1L;
+
+ JMenuBar menuBar = new JMenuBar();
+ JMenu fileMenu = new JMenu("File");
+ JMenu optionsMenu = new JMenu("Options");
+ JMenu actionsMenu = new JMenu("Actions");
+ JMenuItem exitMenuItem = new JMenuItem("Exit");
+ JMenuItem loadMenuItem = new JMenuItem("Load");
+ JMenuItem loadDBMenuItem = new JMenuItem("Load from DB");
+ JMenuItem filterMenuItem = new JMenuItem("Filter");
+ JMenuItem snaplogMenuItem = new JMenuItem("Snaplogs");
+ JMenuItem dbConfMenuItem = new JMenuItem("DB conf");
+ JMenu snaplogsMenu = new JMenu("Snaplogs");
+ JMenuItem viewSnaplogMenuItem = new JMenuItem("View");
+ JMenuItem plotSnaplogMenuItem = new JMenuItem("Plot");
+ JMenuItem plotSnaplogCWNDMenuItem = new JMenuItem("Plot CWND");
+ JMenu tcpdumpsMenu = new JMenu("Tcpdumps");
+ JMenuItem viewTcpdumpMenuItem = new JMenuItem("View");
+ JMenuItem plotTcpdumpMenuItem = new JMenuItem("Plot");
+ JMenu cputimesMenu = new JMenu("Cputimes");
+ JMenuItem viewCputimeMenuItem = new JMenuItem("View");
+ JFileChooser fc;
+ final Properties properties = new Properties();
+ final File propertyFile = new File(System.getenv("HOME") + "/.jAnalyze.properties");
+
+ FilterFrame filterFrame = null;
+ DBConfFrame dbConfFrame = null;
+ SnaplogFrame snaplogFrame = null;
+
+ JPanel listPanel = new JPanel();
+ JPanel infoPanel = new JPanel();
+
+ private boolean stopLoading;
+
+ private Collection<ResultsContainer> results = new Vector<ResultsContainer>();
+
+ public JAnalyze()
+ {
+ // Title
+ setTitle("JAnalyze v0.9.1");
+
+ try {
+ properties.load(new FileInputStream(propertyFile));
+ }
+ catch (FileNotFoundException e) {
+ // do nothing
+ }
+ catch (IOException e) {
+ // do nothing
+ }
+
+ dbConfFrame = new DBConfFrame(this);
+ snaplogFrame = new SnaplogFrame(this);
+ filterFrame = new FilterFrame(JAnalyze.this, results);
+
+ addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent event) {
+ try {
+ properties.store(new FileOutputStream(propertyFile), "JAnalyze properties file");
+ }
+ catch (FileNotFoundException e) {
+ // do nothing
+ }
+ catch (IOException e) {
+ // do nothing
+ }
+ }
+ });
+
+ // Menu
+ loadMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ if (fc == null) {
+ fc = new JFileChooser(new File(getProperties().getProperty("loadDir", "/usr/local/ndt/")));
+ }
+ int returnVal = fc.showOpenDialog(JAnalyze.this);
+ getProperties().setProperty("loadDir", fc.getCurrentDirectory().getAbsolutePath());
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ try {
+ File file = fc.getSelectedFile();
+ JFrame loadingFrame = new LoadingFrame(file.getAbsolutePath(), JAnalyze.this);
+ loadingFrame.setSize(150, 100);
+ loadingFrame.setVisible(true);
+ }
+ catch (Exception exc) {
+ System.out.println("Loading of the web100srv.log failed!");
+ exc.printStackTrace();
+ }
+ }
+ }
+ });
+ fileMenu.add(loadMenuItem);
+ loadDBMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFrame loadingFrame = new LoadingDBFrame(JAnalyze.this);
+ loadingFrame.setSize(150, 100);
+ loadingFrame.setVisible(true);
+ }
+ });
+ fileMenu.add(loadDBMenuItem);
+ fileMenu.addSeparator();
+ exitMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ try {
+ properties.store(new FileOutputStream(propertyFile), "JAnalyze properties file");
+ }
+ catch (FileNotFoundException e) {
+ // do nothing
+ }
+ catch (IOException e) {
+ // do nothing
+ }
+ System.exit(0);
+ }
+ });
+ fileMenu.add(exitMenuItem);
+ menuBar.add(fileMenu);
+
+ filterMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ filterFrame.setVisible(true);
+ }
+ });
+ optionsMenu.add(filterMenuItem);
+ dbConfMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ dbConfFrame.setVisible(true);
+ }
+ });
+ optionsMenu.add(dbConfMenuItem);
+ snaplogMenuItem.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ snaplogFrame.setVisible(true);
+ }
+ });
+ optionsMenu.add(snaplogMenuItem);
+
+ menuBar.add(optionsMenu);
+
+ viewSnaplogMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ String snaplogData = getSnaplogData(file.getAbsolutePath(), null, 0, false);
+ JTextArea area = new JTextArea(snaplogData);
+ area.setEditable(false);
+ JFrame frame = new JFrame("Snaplog variables");
+ frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+ }
+ });
+ snaplogsMenu.add(viewSnaplogMenuItem);
+ plotSnaplogMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ plotSnaplog(file.getAbsolutePath());
+ }
+ }
+ });
+ snaplogsMenu.add(plotSnaplogMenuItem);
+ plotSnaplogCWNDMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ plotSnaplogCWND(file.getAbsolutePath());
+ }
+ }
+ });
+ snaplogsMenu.add(plotSnaplogCWNDMenuItem);
+ actionsMenu.add(snaplogsMenu);
+ viewTcpdumpMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ String tcpdumpData = getTcpdumpData(file.getAbsolutePath());
+ JTextArea area = new JTextArea(tcpdumpData);
+ area.setEditable(false);
+ JFrame frame = new JFrame("tcpdump trace");
+ frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+ }
+ });
+ tcpdumpsMenu.add(viewTcpdumpMenuItem);
+ plotTcpdumpMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ plotTcpdumpS(file.getAbsolutePath());
+ }
+ }
+ });
+ tcpdumpsMenu.add(plotTcpdumpMenuItem);
+ actionsMenu.add(tcpdumpsMenu);
+ viewCputimeMenuItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ plotCputime(file.getAbsolutePath());
+ }
+ }
+ });
+ cputimesMenu.add(viewCputimeMenuItem);
+ actionsMenu.add(cputimesMenu);
+
+ menuBar.add(actionsMenu);
+
+ setJMenuBar(menuBar);
+
+ Container cp = getContentPane();
+ cp.setLayout(new BorderLayout());
+ listPanel.setLayout(new BorderLayout());
+ cp.add(listPanel, BorderLayout.WEST);
+ infoPanel.setLayout(new BorderLayout());
+ cp.add(infoPanel);
+
+ setDefaultCloseOperation(EXIT_ON_CLOSE);
+ setSize(900, 770);
+ setVisible(true);
+ }
+
+ protected void loadDB(LoadingDBFrame frame) throws SQLException
+ {
+ stopLoading = false;
+ try {
+ Class.forName (dbConfFrame.getDriver()).newInstance ();
+ }
+ catch (Exception e) {
+ System.out.println("Failed to load mysql jdbc driver: " + e.getMessage());
+ }
+ Connection con = DriverManager.getConnection(dbConfFrame.getDSN(),
+ dbConfFrame.getUID(), dbConfFrame.getPWD());
+
+ Statement stmt = con.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM ndt_test_results;");
+ Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
+ while (!stopLoading && rs.next()) {
+ ResultsContainer result = new ResultsContainer(this);
+ try {
+ result.parseDBRow(rs);
+ }
+ catch (SQLException e) {
+ continue;
+ }
+ result.calculate();
+ newResults.add(result);
+ frame.loadedResult();
+ }
+ if (stopLoading) {
+ return;
+ }
+ results.clear();
+ results.addAll(newResults);
+ filterFrame.resultsChange();
+ rebuildResultsList();
+ }
+
+ protected void loadWeb100srvLog(String filename, LoadingFrame frame) throws FileNotFoundException, IOException
+ {
+ stopLoading = false;
+// System.out.println("Loading file: " + filename);
+ BufferedReader br = new BufferedReader(new FileReader(filename));
+ String line;
+ ResultsContainer result = new ResultsContainer(this);
+ Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
+ while (!stopLoading && (line = br.readLine()) != null) {
+ if (line.startsWith("spds")) {
+ result.parseSpds(line);
+ continue;
+ }
+ if (line.startsWith("Running")) {
+ result.parseRunAvg(line);
+ continue;
+ }
+ if (line.startsWith("snaplog file:")) {
+ result.parseSnaplogFilename(line);
+ continue;
+ }
+ if (line.startsWith("c2s_snaplog file:")) {
+ result.parseC2sSnaplogFilename(line);
+ continue;
+ }
+ if (line.startsWith("cputime trace file:")) {
+ result.parseCputimeFilename(line);
+ continue;
+ }
+ if (line.contains("port")) {
+ result = new ResultsContainer(this);
+ result.parsePort(line);
+ continue;
+ }
+ if (line.contains(",")) {
+ if ((result != null) && result.parseWeb100Var(line)) {
+ result.calculate();
+ newResults.add(result);
+ result = null;
+ frame.loadedResult();
+ }
+ }
+ }
+ if (stopLoading) {
+ return;
+ }
+ results.clear();
+ results.addAll(newResults);
+ filterFrame.resultsChange();
+ rebuildResultsList();
+ }
+
+ protected String getSnaplogData(String snaplogFilename, String variables, int numOfLines, boolean trim) {
+ if (snaplogFilename == null) {
+ return "";
+ }
+ String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-tm", variables == null ?
+ snaplogFrame.getVariables() : variables,
+ snaplogFilename.startsWith("/") ? snaplogFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + snaplogFilename :
+ snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
+ Process genplotProcess;
+ try {
+ genplotProcess = Runtime.getRuntime().exec(cmdarray);
+ }
+ catch (IOException e) {
+ System.out.println(e);
+ return null;
+ }
+ BufferedReader in = new BufferedReader(new InputStreamReader(genplotProcess.getInputStream()));
+ StringBuffer toReturn = new StringBuffer();
+ try {
+ int counter = 1;
+ if (trim) {
+ in.readLine();in.readLine();in.readLine();
+ }
+ String line = in.readLine();
+ while (line != null && counter != numOfLines) {
+ toReturn.append(line + "\n");
+ line = in.readLine();
+ counter += 1;
+ }
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ genplotProcess.destroy();
+ return toReturn.toString();
+ }
+
+ protected boolean checkTcpDump(String ndttraceFilename) {
+ File file = new File(snaplogFrame.getSnaplogs(), ndttraceFilename);
+ return file.exists() && file.canRead();
+ }
+
+ protected String getTcpdumpData(String ndttraceFilename) {
+ if (ndttraceFilename == null) {
+ return "";
+ }
+ String[] cmdarray = new String[] {snaplogFrame.getTcptrace(), "-l",
+ ndttraceFilename.startsWith("/") ? ndttraceFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + ndttraceFilename :
+ snaplogFrame.getSnaplogs() + "/" + ndttraceFilename};
+ Process tcptraceProcess;
+ try {
+ tcptraceProcess = Runtime.getRuntime().exec(cmdarray);
+ }
+ catch (IOException e) {
+ System.out.println(e);
+ return null;
+ }
+ BufferedReader in = new BufferedReader(new InputStreamReader(tcptraceProcess.getInputStream()));
+ StringBuffer toReturn = new StringBuffer();
+ try {
+ String line = in.readLine();
+ while (line != null) {
+ toReturn.append(line + "\n");
+ line = in.readLine();
+ }
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ tcptraceProcess.destroy();
+ return toReturn.toString();
+
+ }
+
+ protected void plotTcpdumpS(String ndttraceFilename) {
+ if (ndttraceFilename == null) {
+ return;
+ }
+ String[] cmdarray = new String[] {snaplogFrame.getTcptrace(), "-S",
+ ndttraceFilename.startsWith("/") ? ndttraceFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + ndttraceFilename :
+ snaplogFrame.getSnaplogs() + "/" + ndttraceFilename};
+ String[] cmdarray2 = new String[] {snaplogFrame.getXplot(), "a2b_tsg.xpl"};
+ String[] cmdarray3 = new String[] {snaplogFrame.getXplot(), "b2a_tsg.xpl"};
+ try {
+ Runtime.getRuntime().exec(cmdarray);
+ Thread.sleep(1000);
+ Runtime.getRuntime().exec(cmdarray2);
+ Runtime.getRuntime().exec(cmdarray3);
+ }
+ catch (InterruptedException e) {
+ System.out.println(e);
+ }
+ catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+
+
+ protected void plotSnaplog(String snaplogFilename) {
+ if (snaplogFilename == null) {
+ return;
+ }
+ String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-m", snaplogFrame.getVariables(),
+ snaplogFilename.startsWith("/") ? snaplogFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + snaplogFilename :
+ snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
+ String[] cmdarray2 = new String[] {snaplogFrame.getXplot(),
+ "User Defined" +
+ (snaplogFilename.substring(snaplogFilename.lastIndexOf(".")).length() > 6 ?
+ snaplogFilename.substring(
+ snaplogFilename.substring(0, snaplogFilename.lastIndexOf(".")).lastIndexOf("."),
+ snaplogFilename.lastIndexOf(".")) :
+ snaplogFilename.substring(snaplogFilename.lastIndexOf("."))) + ".xpl"};
+ try {
+ Runtime.getRuntime().exec(cmdarray);
+ Thread.sleep(1000);
+ Runtime.getRuntime().exec(cmdarray2);
+ }
+ catch (InterruptedException e) {
+ System.out.println(e);
+ }
+ catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+
+ protected void plotSnaplogCWND(String snaplogFilename) {
+ if (snaplogFilename == null) {
+ return;
+ }
+ String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-C",
+ snaplogFilename.startsWith("/") ? snaplogFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + snaplogFilename :
+ snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
+ String[] cmdarray2 = new String[] {snaplogFrame.getXplot(),
+ "CurCwnd" +
+ (snaplogFilename.substring(snaplogFilename.lastIndexOf(".")).length() > 6 ?
+ snaplogFilename.substring(
+ snaplogFilename.substring(0, snaplogFilename.lastIndexOf(".")).lastIndexOf("."),
+ snaplogFilename.lastIndexOf(".")) :
+ snaplogFilename.substring(snaplogFilename.lastIndexOf("."))) + ".xpl"};
+ try {
+ Runtime.getRuntime().exec(cmdarray);
+ Thread.sleep(1000);
+ Runtime.getRuntime().exec(cmdarray2);
+ }
+ catch (InterruptedException e) {
+ System.out.println(e);
+ }
+ catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+
+ protected void plotCputime(String cputraceFilename) {
+ if (cputraceFilename == null) {
+ return;
+ }
+ String fileName = cputraceFilename.startsWith("/") ? cputraceFilename :
+ snaplogFrame.getSnaplogs().endsWith("/") ?
+ snaplogFrame.getSnaplogs() + cputraceFilename :
+ snaplogFrame.getSnaplogs() + "/" + cputraceFilename;
+ JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(fileName));
+ }
+ catch (FileNotFoundException exc) {
+ int returnVal = chooser.showOpenDialog(JAnalyze.this);
+
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ File file = chooser.getSelectedFile();
+ try {
+ br = new BufferedReader(new FileReader(file.getAbsolutePath()));
+ }
+ catch (Exception ex) {
+ System.out.println("Loading of the cputime file: " + file.getAbsolutePath() + " failed!");
+ ex.printStackTrace();
+ return;
+ }
+ }
+ else {
+ return;
+ }
+ }
+ String line;
+ Vector<Double> time = new Vector<Double>();
+ Vector<Double> userTime = new Vector<Double>();
+ Vector<Double> systemTime = new Vector<Double>();
+ Vector<Double> cuserTime = new Vector<Double>();
+ Vector<Double> csystemTime = new Vector<Double>();
+ try {
+ while ((line = br.readLine()) != null) {
+ StringTokenizer st = new StringTokenizer(line.trim(), " ");
+ time.add(Double.parseDouble(st.nextToken()));
+ userTime.add(Double.parseDouble(st.nextToken()));
+ systemTime.add(Double.parseDouble(st.nextToken()));
+ cuserTime.add(Double.parseDouble(st.nextToken()));
+ csystemTime.add(Double.parseDouble(st.nextToken()));
+ }
+ br.close();
+ }
+ catch (IOException exc) {
+ exc.printStackTrace();
+ return;
+ }
+ double[][] model = new double[4][time.size()];
+ double[] columns = new double[time.size()];
+ for (int i = 0; i < time.size(); ++i) {
+ model[0][i] = userTime.elementAt(i);
+ model[1][i] = systemTime.elementAt(i);
+ model[2][i] = cuserTime.elementAt(i);
+ model[3][i] = csystemTime.elementAt(i);
+ columns[i] = time.elementAt(i);
+ }
+ String[] rows = { "user time", "system time",
+ "user time of dead children", "system time of dead children" };
+ String title = "Cputime usage: " + cputraceFilename;
+ EditableChartDataModel data = new EditableChartDataModel(model, columns, rows);
+ ChartPanel panel = new ChartPanel(data, title, DefaultChart.LINEAR_X_LINEAR_Y);
+ panel.addChartRenderer(new LineChartRenderer(panel.getCoordSystem(), data), 1);
+
+ JFrame frame = new JFrame(title);
+ frame.getContentPane().add(panel, BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+
+
+ void rebuildResultsList() {
+ listPanel.removeAll();
+ infoPanel.removeAll();
+ fillListPanel();
+ }
+
+ private void fillListPanel() {
+ final JList list;
+ list = new JList(new ResultsList(filterFrame.getResults()));
+ list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ list.addMouseListener(new
+ MouseAdapter() {
+
+ public void mousePressed(MouseEvent e) {
+ int index = list.locationToIndex(e.getPoint());
+ list.setSelectedIndex(index);
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ int index = list.locationToIndex(e.getPoint());
+ list.setSelectedIndex(index);
+ }
+ });
+ list.addListSelectionListener(new
+ ListSelectionListener() {
+
+ public void valueChanged(ListSelectionEvent arg0) {
+ showResultInfo((ResultsContainer)
list.getSelectedValue());
+ }
+
+ private void showResultInfo(ResultsContainer result) {
+ infoPanel.removeAll();
+ infoPanel.add(result.getInfoPane());
+ infoPanel.revalidate();
+ }
+ });
+ JPanel tmpPanel = new JPanel();
+ tmpPanel.add(new JLabel("Shown results: " + list.getModel().getSize() + "/" + results.size()));
+ listPanel.add(tmpPanel, BorderLayout.NORTH);
+ listPanel.add(new JScrollPane(list));
+ listPanel.revalidate();
+ listPanel.repaint();
+ infoPanel.revalidate();
+ infoPanel.repaint();
+ }
+
+ public static void main(String args[])
+ {
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ } catch (Exception ex) { ex.printStackTrace(); }
+ new JAnalyze();
+ }
+
+ public void stopLoading() {
+ stopLoading = true;
+ }
+
+ public Properties getProperties() {
+ return properties;
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/LoadingDBFrame.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,68 @@
+package edu.internet2.ndt;
+
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+//import javax.swing.JProgressBar;
+import javax.swing.WindowConstants;
+
+public class LoadingDBFrame extends JFrame {
+
+ private static final long serialVersionUID = 1L;
+
+ private JButton cancelButton = new JButton("Cancel");
+// private JProgressBar progressBar;
+ private int loaded = 0;
+ private JLabel loadedLabel = new JLabel("Loaded results: " + loaded);
+
+ public LoadingDBFrame(final JAnalyze janalyze) {
+ super("Loading...");
+
+ final SwingWorker worker = new SwingWorker() {
+ public Object construct() {
+ try {
+ janalyze.loadDB(LoadingDBFrame.this);
+ }
+ catch (Exception exc) {
+ System.out.println("Loading of the DB data failed!");
+ exc.printStackTrace();
+ }
+ return null;
+ }
+ public void finished() {
+ LoadingDBFrame.this.setVisible(false);
+ LoadingDBFrame.this.dispose();
+ }
+ };
+
+// progressBar = new JProgressBar();
+// progressBar.setStringPainted(true);
+ Container cp = getContentPane();
+ cp.setLayout(new BoxLayout(cp, BoxLayout.PAGE_AXIS)) ;
+ cp.add(loadedLabel);
+// cp.add(progressBar);
+ cp.add(cancelButton);
+
+ cancelButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ worker.interrupt();
+ janalyze.stopLoading();
+ LoadingDBFrame.this.setVisible(false);
+ LoadingDBFrame.this.dispose();
+ }
+ });
+
+ setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ worker.start();
+ }
+
+ public void loadedResult() {
+ loaded++;
+ loadedLabel.setText("Loaded results: " + loaded);
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/LoadingFrame.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,68 @@
+package edu.internet2.ndt;
+
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+//import javax.swing.JProgressBar;
+import javax.swing.WindowConstants;
+
+public class LoadingFrame extends JFrame {
+
+ private static final long serialVersionUID = 1L;
+
+ private JButton cancelButton = new JButton("Cancel");
+// private JProgressBar progressBar;
+ private int loaded = 0;
+ private JLabel loadedLabel = new JLabel("Loaded results: " + loaded);
+
+ public LoadingFrame(final String filename, final JAnalyze janalyze) {
+ super("Loading...");
+
+ final SwingWorker worker = new SwingWorker() {
+ public Object construct() {
+ try {
+ janalyze.loadWeb100srvLog(filename,
LoadingFrame.this);
+ }
+ catch (Exception exc) {
+ System.out.println("Loading of the web100srv.log failed!");
+ exc.printStackTrace();
+ }
+ return null;
+ }
+ public void finished() {
+ LoadingFrame.this.setVisible(false);
+ LoadingFrame.this.dispose();
+ }
+ };
+
+// progressBar = new JProgressBar();
+// progressBar.setStringPainted(true);
+ Container cp = getContentPane();
+ cp.setLayout(new BoxLayout(cp, BoxLayout.PAGE_AXIS)) ;
+ cp.add(loadedLabel);
+// cp.add(progressBar);
+ cp.add(cancelButton);
+
+ cancelButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ worker.interrupt();
+ janalyze.stopLoading();
+ LoadingFrame.this.setVisible(false);
+ LoadingFrame.this.dispose();
+ }
+ });
+
+ setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ worker.start();
+ }
+
+ public void loadedResult() {
+ loaded++;
+ loadedLabel.setText("Loaded results: " + loaded);
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/MaxPeakInfo.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,11 @@
+package edu.internet2.ndt;
+
+class MaxPeakInfo extends PeakInfo {
+ MaxPeakInfo(int cwnd, int sampleRTT) {
+ super(cwnd, sampleRTT);
+ }
+
+ public String toString() {
+ return "max: " + super.toString();
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/MinPeakInfo.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,11 @@
+package edu.internet2.ndt;
+
+class MinPeakInfo extends PeakInfo {
+ MinPeakInfo(int cwnd, int sampleRTT) {
+ super(cwnd, sampleRTT);
+ }
+
+ public String toString() {
+ return "min: " + super.toString();
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/PeakInfo.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,42 @@
+package edu.internet2.ndt;
+
+class PeakInfo {
+ private int cwnd;
+ private int sampleRTT;
+
+ PeakInfo(int cwnd, int sampleRTT) {
+ this.cwnd = cwnd;
+ this.sampleRTT = sampleRTT;
+ }
+
+ int getCwnd() {
+ return cwnd;
+ }
+
+ int getSampleRTT() {
+ return sampleRTT;
+ }
+
+ public String toString() {
+ return "Cwnd = " + cwnd + ", sampleRTT = " + sampleRTT + ", " + getPeakSpeed(cwnd, sampleRTT);
+ }
+
+ public static String getPeakSpeed(int cwnd, int sampleRTT) {
+ double pSpeed = (cwnd * 8.0) / sampleRTT;
+ if (pSpeed < 1000.0) {
+ return "peak speed = " + Helpers.formatDouble(pSpeed, 4) + " kbps";
+ }
+ else if (pSpeed < 1000000.0) {
+ return "peak speed = " + Helpers.formatDouble(pSpeed / 1000.0, 4) + " Mbps";
+ }
+ else {
+ return "peak speed = " + Helpers.formatDouble(pSpeed / 1000000.0, 4) + " Gbps";
+ }
+
+ }
+
+ public static double getPeakSpeedInMbps(int cwnd, int sampleRTT) {
+ double pSpeed = (cwnd * 8.0) / sampleRTT;
+ return pSpeed / 1000.0;
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/PropertyListener.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,35 @@
+package edu.internet2.ndt;
+
+import javax.swing.event.DocumentListener;
+import javax.swing.event.DocumentEvent;
+import javax.swing.text.BadLocationException;
+
+public class PropertyListener implements DocumentListener {
+ private JAnalyze mainWindow;
+ private String property;
+
+ public PropertyListener(JAnalyze mainWindow, String property) {
+ this.mainWindow = mainWindow;
+ this.property = property;
+ }
+
+ private void updateProperty(DocumentEvent e) {
+ try {
+ mainWindow.getProperties().setProperty(property,
+ e.getDocument().getText(0, e.getDocument().getLength()));
+ }
+ catch (BadLocationException exc) {
+ // do nothing
+ }
+ }
+
+ public void changedUpdate(DocumentEvent e) {
+ updateProperty(e);
+ }
+ public void insertUpdate(DocumentEvent e) {
+ updateProperty(e);
+ }
+ public void removeUpdate(DocumentEvent e) {
+ updateProperty(e);
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/ResultsContainer.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,1097 @@
+package edu.internet2.ndt;
+
+import java.awt.Component;
+import java.awt.Color;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.util.Collection;
+import java.util.StringTokenizer;
+import java.util.Vector;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import java.awt.BorderLayout;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+import javax.swing.JTextArea;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.SimpleAttributeSet;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class ResultsContainer {
+ private JAnalyze mainWindow;
+ private double[] run_ave = new double[4];
+ private double[] runave = new double[4];
+ private int[][] links = new int[4][16];
+ private int n = 0, m = 0, port;
+ private String date, ip_addr, btlneck, cputraceFilename, snaplogFilename,
+ c2sSnaplogFilename, ndttraceFilename;
+ private int s2c2spd, s2cspd, c2sspd;
+ private int timeouts, sumRTT, countRTT, pktsRetrans, fastRetrans,
+ dataPktsOut, ackPktsOut, currentMSS, dupAcksIn, ackPktsIn,
+ maxRwinRcvd, sndBuf, currentCwnd, sndLimTimeRwin, sndLimTimeCwnd,
+ sndLimTimeSender, dataBytesOut, sndLimTransRwin, sndLimTransCwnd,
+ sndLimTransSender, maxSsthresh, currentRTO, currentRwinRcvd, link,
+ mismatch, bad_cable, half_duplex, c2sdata, c2sack,
+ s2cdata, s2cack, pktsOut;
+ private int congestionSignals = -1, minRTT = -1, congAvoid = -1,
+ congestionOverCount = 0, maxRTT = 0, slowStart = 0, totaltime;
+ private int linkcnt, mismatch2, mismatch3;
+ private double idle, loss, loss2, order, bw, bw2;
+ private double rwintime, cwndtime, sendtime, timesec;
+ private double recvbwd, cwndbwd, sendbwd;
+ private int congestion2=0;
+ private double acks, aspeed, avgrtt;
+ private double cong, retrn, increase, touts, fr_ratio = 0;
+ private double retransec, mmorder;
+ private int[] tail = new int[4];
+ private int[] head = new int[4];
+
+ /* --- experimental congestion detection code --- */
+ double linkType, sspd, mspd;
+ double minrtt, ispd, n1, T1, lspd, n2, T2, lT2, uT2, teeth, lTeeth, uTeeth;
+ boolean limited, normalOperation;
+ private int minPeak = -1, maxPeak = -1, peaks = -1, rawPeaks = -1, realTeeth, ssCurCwnd = -1,
+ ssSampleRTT = -1, fSampleRTT = -1, initPeakSpeed = -1;
+ private Collection<PeakInfo> peakInfos = new Vector<PeakInfo>();
+ private MaxPeakInfo maxPeakSpeed = null;
+ private MinPeakInfo minPeakSpeed = null;
+ private int max25 = -1, max50 = -1, max75 = -1, maxJitter = -1;
+ private int min25 = -1, min50 = -1, min75 = -1, minJitter = -1;
+ /* ---------------------------------------------- */
+
+ ResultsContainer(JAnalyze mainWindow) {
+ this.mainWindow = mainWindow;
+ }
+
+ public void parseDBRow(ResultSet rs) throws SQLException {
+ subParseSpds(rs.getString("spds1"));
+ subParseSpds(rs.getString("spds2"));
+ subParseSpds(rs.getString("spds3"));
+ subParseSpds(rs.getString("spds4"));
+ run_ave[0] = rs.getFloat("runave1");
+ run_ave[1] = rs.getFloat("runave2");
+ run_ave[2] = rs.getFloat("runave3");
+ run_ave[3] = rs.getFloat("runave4");
+ cputraceFilename = rs.getString("cputimelog");
+ if (cputraceFilename.length() == 0)
+ cputraceFilename = null;
+ snaplogFilename = rs.getString("snaplog");
+ if (snaplogFilename.length() == 0)
+ snaplogFilename = null;
+ c2sSnaplogFilename = rs.getString("c2s_snaplog");
+ if (c2sSnaplogFilename.length() == 0)
+ c2sSnaplogFilename = null;
+ ip_addr = rs.getString("hostName");
+ port = rs.getInt("testPort");
+ date = rs.getString("date");
+ s2c2spd = rs.getInt("s2c2spd");
+ s2cspd = rs.getInt("s2cspd");
+ c2sspd = rs.getInt("c2sspd");
+ timeouts = rs.getInt("Timeouts");
+ sumRTT = rs.getInt("SumRTT");
+ countRTT = rs.getInt("CountRTT");
+ pktsRetrans = rs.getInt("PktsRetrans");
+ fastRetrans = rs.getInt("FastRetran");
+ dataPktsOut = rs.getInt("DataPktsOut");
+ ackPktsOut = rs.getInt("AckPktsOut");
+ currentMSS = rs.getInt("CurrentMSS");
+ dupAcksIn = rs.getInt("DupAcksIn");
+ ackPktsIn = rs.getInt("AckPktsIn");
+ maxRwinRcvd = rs.getInt("MaxRwinRcvd");
+ sndBuf = rs.getInt("Sndbuf");
+ currentCwnd = rs.getInt("MaxCwnd");
+ sndLimTimeRwin = rs.getInt("SndLimTimeRwin");
+ sndLimTimeCwnd = rs.getInt("SndLimTimeCwnd");
+ sndLimTimeSender = rs.getInt("SndLimTimeSender");
+ dataBytesOut = rs.getInt("DataBytesOut");
+ sndLimTransRwin = rs.getInt("SndLimTransRwin");
+ sndLimTransCwnd = rs.getInt("SndLimTransCwnd");
+ sndLimTransSender = rs.getInt("SndLimTransSender");
+ maxSsthresh = rs.getInt("MaxSsthresh");
+ currentRTO = rs.getInt("CurrentRTO");
+ currentRwinRcvd = rs.getInt("CurrentRwinRcvd");
+ link = rs.getInt("link");
+ mismatch = rs.getInt("mismatch");
+ bad_cable = rs.getInt("bad_cable");
+ half_duplex = rs.getInt("half_duplex");
+ c2sdata = rs.getInt("c2sdata");
+ c2sack = rs.getInt("c2sack");
+ s2cdata = rs.getInt("s2cdata");
+ s2cack = rs.getInt("s2cack");
+ congestionSignals = rs.getInt("CongestionSignals");
+ pktsOut = rs.getInt("PktsOut");
+ minRTT = rs.getInt("MinRTT");
+ congAvoid = rs.getInt("CongAvoid");
+ congestionOverCount = rs.getInt("CongestionOverCount");
+ maxRTT = rs.getInt("MaxRTT");
+ slowStart = rs.getInt("SlowStart");
+ minPeak = rs.getInt("minPeak");
+ maxPeak = rs.getInt("maxPeak");
+ peaks = rs.getInt("peaks");
+ /*ip_addr2 = rs.getString("rmt_host");*/
+ /*congestion = rs.getInt("congestion");*/
+ /*rcvWinScale = rs.getInt("RcvWinScale");*/
+ /*autotune = rs.getInt("autotune");*/
+ /*otherReductions = rs.getInt("OtherReductions");*/
+ /*curTimeouts = rs.getInt("CurTimeoutCount");*/
+ /*abruptTimeouts = rs.getInt("AbruptTimeouts");*/
+ /*sendStall = rs.getInt("SendStall");*/
+ /*subsequentTimeouts = rs.getInt("SubsequentTimeouts");*/
+ /*thruBytesAcked = rs.getInt("ThruBytesAcked");*/
+ }
+
+ private void subParseSpds(String line) {
+ StringTokenizer st = new StringTokenizer(line, " ");
+ linkcnt = 0;
+ while (st.hasMoreTokens()) {
+ String number = st.nextToken();
+ try {
+ links[n][linkcnt] = Integer.parseInt(number);
+ linkcnt++;
+ }
+ catch (NumberFormatException exc) {
+ runave[n] = Double.parseDouble(number);
+ linkcnt++;
+ break;
+ }
+ }
+ n++;
+
+ }
+
+ public void parseSpds(String line) {
+ String spdsLine = line.substring(line.indexOf("'") + 1, line.lastIndexOf("'"));
+ subParseSpds(spdsLine.trim());
+ }
+
+ public void parseRunAvg(String line) {
+ StringTokenizer st = new StringTokenizer(line.trim(), " ");
+ st.nextToken(); st.nextToken(); st.nextToken();
+ run_ave[m] = Double.parseDouble(st.nextToken());
+ m++;
+ }
+
+ public void parsePort(String line) {
+ // System.out.println("Start of New Packet trace -- " +
line);
+ String dateAndHost = line.substring(0, line.indexOf("port") - 1);
+ date = dateAndHost.substring(0, dateAndHost.lastIndexOf(" ")).trim();
+ ip_addr = dateAndHost.substring(dateAndHost.lastIndexOf(" ")).trim();
+ port = Integer.parseInt(line.substring(line.indexOf("port") + 5));
+ }
+
+ public void parseSnaplogFilename(String line) {
+ snaplogFilename = line.substring(14);
+ }
+
+ public void parseC2sSnaplogFilename(String line) {
+ c2sSnaplogFilename = line.substring(18);
+ }
+
+ public void parseCputimeFilename(String line) {
+ cputraceFilename = line.substring(20);
+ }
+
+ public boolean parseWeb100Var(String line) {
+ StringTokenizer st = new StringTokenizer(line.trim(), ",");
+ st.nextToken();
+ /* ip_addr2 */ st.nextToken();
+ if (st.hasMoreTokens() == false) {
+ return false;
+ }
+ try {
+ s2c2spd = Integer.parseInt(st.nextToken());
+ s2cspd = Integer.parseInt(st.nextToken());
+ c2sspd = Integer.parseInt(st.nextToken());
+ timeouts = Integer.parseInt(st.nextToken());
+ sumRTT = Integer.parseInt(st.nextToken());
+ countRTT = Integer.parseInt(st.nextToken());
+ pktsRetrans = Integer.parseInt(st.nextToken());
+ fastRetrans = Integer.parseInt(st.nextToken());
+ dataPktsOut = Integer.parseInt(st.nextToken());
+ ackPktsOut = Integer.parseInt(st.nextToken());
+ currentMSS = Integer.parseInt(st.nextToken());
+ dupAcksIn = Integer.parseInt(st.nextToken());
+ ackPktsIn = Integer.parseInt(st.nextToken());
+ maxRwinRcvd = Integer.parseInt(st.nextToken());
+ sndBuf = Integer.parseInt(st.nextToken());
+ currentCwnd = Integer.parseInt(st.nextToken());
+ sndLimTimeRwin = Integer.parseInt(st.nextToken());
+ sndLimTimeCwnd = Integer.parseInt(st.nextToken());
+ sndLimTimeSender = Integer.parseInt(st.nextToken());
+ dataBytesOut = Integer.parseInt(st.nextToken());
+ sndLimTransRwin = Integer.parseInt(st.nextToken());
+ sndLimTransCwnd = Integer.parseInt(st.nextToken());
+ sndLimTransSender = Integer.parseInt(st.nextToken());
+ maxSsthresh = Integer.parseInt(st.nextToken());
+ currentRTO = Integer.parseInt(st.nextToken());
+ currentRwinRcvd = Integer.parseInt(st.nextToken());
+ link = Integer.parseInt(st.nextToken());
+ mismatch = Integer.parseInt(st.nextToken());
+ bad_cable = Integer.parseInt(st.nextToken());
+ half_duplex = Integer.parseInt(st.nextToken());
+ /* congestion */ Integer.parseInt(st.nextToken());
+ c2sdata = Integer.parseInt(st.nextToken());
+ c2sack = Integer.parseInt(st.nextToken());
+ s2cdata = Integer.parseInt(st.nextToken());
+ s2cack = Integer.parseInt(st.nextToken());
+ congestionSignals = Integer.parseInt(st.nextToken());
+ pktsOut = Integer.parseInt(st.nextToken());
+ minRTT = Integer.parseInt(st.nextToken());
+ /* rcvWinScale */ Integer.parseInt(st.nextToken());
+ /* autotune */ Integer.parseInt(st.nextToken());
+ congAvoid = Integer.parseInt(st.nextToken());
+ congestionOverCount = Integer.parseInt(st.nextToken());
+ maxRTT = Integer.parseInt(st.nextToken());
+ /* otherReductions */ Integer.parseInt(st.nextToken());
+ /* curTimeouts */ Integer.parseInt(st.nextToken());
+ /* abruptTimeouts */ Integer.parseInt(st.nextToken());
+ /* sendStall */ Integer.parseInt(st.nextToken());
+ slowStart = Integer.parseInt(st.nextToken());
+ /* subsequentTimeouts */ Integer.parseInt(st.nextToken());
+ /* thruBytesAcked */ Integer.parseInt(st.nextToken());
+ minPeak = Integer.parseInt(st.nextToken());
+ maxPeak = Integer.parseInt(st.nextToken());
+ peaks = Integer.parseInt(st.nextToken());
+ }
+ catch (Exception exc) {
+ // do nothing
+ }
+ return true;
+ }
+
+ public void calculate() {
+ int i, j;
+ double k, rttsec, spd;
+
+ tail[0] = tail[1] = tail[2] = tail[3] = 0;
+ head[0] = head[1] = head[2] = head[3] = 0;
+
+ for (i=0; i<4; i++) {
+ int max = 0;
+ int indx = 0;
+ int total = 0;
+ for (j=0; j<linkcnt-1; j++) {
+ total += links[i][j];
+ if (max < links[i][j]) {
+ max = links[i][j];
+ indx = j;
+ }
+ }
+ for (j=indx+1; j<10; j++) {
+ k = (float) links[i][j] / max;
+ if (k > .1)
+ tail[i]++;
+ }
+ for (j=0; j<indx; j++) {
+ k = (float) links[i][j] / max;
+ if (k > .1)
+ head[i]++;
+ }
+ if (links[i][indx] == -1)
+ indx = -1;
+ if ((total < 20) && (indx != -1))
+ indx = -2;
+ switch (i) {
+ case 0: c2sdata = indx;
+ // System.out.println("Client --> Server data detects link = " + describeDetLink(indx));
+ break;
+ case 1: c2sack = indx;
+ // System.out.println("Client <-- Server Ack's detect link = " + describeDetLink(indx));
+ break;
+ case 2: s2cdata = indx;
+ // System.out.println("Server --> Client data detects link = " + describeDetLink(indx));
+ break;
+ case 3: s2cack = indx;
+ // System.out.println("Server <-- Client Ack's detect link = " + describeDetLink(indx));
+ break;
+ }
+ }
+ switch (c2sdata) {
+ case -2: btlneck = "Insufficent Data"; break;
+ case -1: btlneck = "a System Fault"; break;
+ case 0: btlneck = "the Round Trip Time"; break;
+ case 1: btlneck = "a 'Dial-up modem' connection"; break;
+ case 2:
+ if ((c2sspd/s2cspd > .8) && (c2sspd/s2cspd < 1.2) && (c2sspd > 1000))
+ btlneck = "a 'T1' subnet";
+ else {
+ if ((tail[3] > 1) || (s2cack == 3))
+ btlneck = "a 'Cable Modem' connection";
+ else
+ btlneck = "a 'DSL' connection";
+ }
+ break;
+ case 3: if (linkcnt == 16)
+ btlneck = "a T1 + subnet";
+ else
+ btlneck = "an 'Ethernet' subnet";
+ break;
+ case 4: if (linkcnt == 16)
+ btlneck = "a IEEE 802.11b Wifi subnet";
+ else
+ btlneck = "a 'T3/DS-3' subnet";
+ break;
+ case 5: if (linkcnt == 16)
+ btlneck = "a Wifi + subnet";
+ else
+ btlneck = "a 'FastEthernet' subnet";
+ break;
+ case 6: if (linkcnt == 16)
+ btlneck = "a Ethernet subnet";
+ else
+ btlneck = "an 'OC-12' subnet";
+ break;
+ case 7: if (linkcnt == 16)
+ btlneck = "a T3/DS3 subnet";
+ else
+ btlneck = "a 'Gigabit Ethernet' subnet";
+ break;
+ case 8: if (linkcnt == 16)
+ btlneck = "a FastEthernet subnet";
+ else
+ btlneck = "an 'OC-48' subnet";
+ break;
+ case 9: if (linkcnt == 16)
+ btlneck = "a OC-12 subnet";
+ else
+ btlneck = "a '10 Gigabit Enet' subnet";
+ break;
+ case 10: if (linkcnt == 16)
+ btlneck = "a Gigabit Ethernet subnet";
+ else
+ btlneck = "Retransmissions";
+ case 11: btlneck = "an 'OC-48' subnet"; break;
+ case 12: btlneck = "a '10 Gigabit Enet' subnet"; break;
+ case 13: btlneck = "Retransmissions"; break;
+ }
+ /* Calculate some values */
+ avgrtt = (double) sumRTT/countRTT;
+ rttsec = avgrtt * .001;
+ loss = (double)(pktsRetrans- fastRetrans)/(double)(dataPktsOut-ackPktsOut);
+ loss2 = (double)congestionSignals/pktsOut;
+ if (loss == 0)
+ loss = .0000000001; /* set to 10^-6 for now */
+ if (loss2 == 0)
+ loss2 = .0000000001; /* set to 10^-6 for now */
+
+ order = (double)dupAcksIn/ackPktsIn;
+ bw = (currentMSS / (rttsec * Math.sqrt(loss))) * 8 / 1024 / 1024;
+ bw2 = (currentMSS / (rttsec * Math.sqrt(loss2))) * 8 / 1024 / 1024;
+ totaltime = sndLimTimeRwin + sndLimTimeCwnd + sndLimTimeSender;
+ rwintime = (double)sndLimTimeRwin/totaltime;
+ cwndtime = (double)sndLimTimeCwnd/totaltime;
+ sendtime = (double)sndLimTimeSender/totaltime;
+ timesec = totaltime/1000000;
+ idle = (timeouts * ((double)currentRTO/1000))/timesec;
+ retrn = (float)pktsRetrans / pktsOut;
+ increase = (float)congAvoid / pktsOut;
+
+ recvbwd = ((maxRwinRcvd*8)/avgrtt)/1000;
+ cwndbwd = ((currentCwnd*8)/avgrtt)/1000;
+ sendbwd = ((sndBuf*8)/avgrtt)/1000;
+
+ spd = ((double)dataBytesOut / (double)totaltime) * 8;
+
+ mismatch2 = 0;
+ mismatch3 = 0;
+ mmorder = (float)(dataPktsOut - pktsRetrans - fastRetrans) / dataPktsOut;
+ cong = (float)(congestionSignals - congestionOverCount) / pktsOut;
+ touts = (float)timeouts / pktsOut;
+ if (pktsRetrans > 0)
+ fr_ratio = fastRetrans / pktsRetrans;
+ retransec = pktsRetrans / timesec;
+
+ /* new test based on analysis of TCP behavior in duplex mismatch condition. */
+
+ acks = (double) ackPktsIn / (double) dataPktsOut;
+ if (s2cspd < c2sspd)
+ aspeed = (double)c2sspd / (double)s2cspd;
+ else
+ aspeed = (double)s2cspd / (double)c2sspd;
+
+ if (((acks > 0.7) || (acks < 0.3)) && (retrn > 0.03) && (congAvoid
slowStart)) {+ if ((2*currentMSS) == maxSsthresh) {
+ mismatch2 = 1;
+ mismatch3 = 0;
+ } else if (aspeed > 15){
+ mismatch2 = 2;
+ }
+ }
+ if ((idle > 0.65) && (touts < 0.4)) {
+ if (maxSsthresh == (2*currentMSS)) {
+ mismatch2 = 0;
+ mismatch3 = 1;
+ } else {
+ mismatch3 = 2;
+ }
+ }
+ /* estimate is less than throughput, something is wrong */
+ if (bw < spd)
+ link = 0;
+
+ if (((loss*100)/timesec > 15) && (cwndtime/timesec > .6) &&
+ (loss < .01) && (maxSsthresh > 0))
+ bad_cable = 1;
+
+ /* test for Ethernet link (assume Fast E.) */
+ if ((spd < 9.5) && (spd > 3.0) && (loss < .01) && (order < .035) && (link > 0))
+ link = 10;
+
+ /* test for DSL/Cable modem link */
+ if ((sndLimTimeSender < 15000) && (spd < 2) && (spd < bw) && (link
0))+ link = 2;
+
+ if (((rwintime > .95) && (sndLimTransRwin/timesec > 30) &&
+ (sndLimTransSender/timesec > 30)) || (link <= 10))
+ half_duplex = 1;
+
+ if ((cwndtime > .02) && (mismatch2 == 0) && (cwndbwd < recvbwd))
+ congestion2 = 1;
+
+ // System.out.println("Throughput to host [" + ip_addr + "] is limited by " + btlneck);
+
+ // System.out.println("\tWeb100 says link = " + link + ", speed-chk says link = " + c2sdata);
+ // System.out.println("\tSpeed-chk says {" + c2sdata + ", " + c2sack + ", " + s2cdata + ", " + s2cack +
+ // "}, Running average = {" + Helpers.formatDouble(runave[0], 1) + ", " + Helpers.formatDouble(runave[1], 1) +
+ // ", " + Helpers.formatDouble(runave[2], 1) + ", " + Helpers.formatDouble(runave[3], 1) + "}");
+ // if (c2sspd > 1000)
+ // System.out.print("\tC2Sspeed = " + Helpers.formatDouble(c2sspd/1000.0, 2) + " Mbps, S2Cspeed = " +
+ // Helpers.formatDouble(s2cspd/1000.0, 2) + " Mbps,\nCWND-Limited = " + Helpers.formatDouble(s2c2spd/1000.0, 2) + " Mbps, ");
+ // else
+ // System.out.print("\tC2Sspeed = " + c2sspd + " kbps, S2Cspeed = " + s2cspd + " kbps,\nCWND-Limited: " + s2c2spd + " kbps, ");
+ // if (bw > 1)
+ // System.out.println("Estimate = " + Helpers.formatDouble(bw, 2) + " Mbps (" + Helpers.formatDouble(bw2, 2) + " Mbps)");
+ // else
+ // System.out.println("Estimate = " + Helpers.formatDouble(bw*1000, 2) + " kbps (" +
+ // Helpers.formatDouble(bw2*1000, 2) +
" kbps)");
+ //
+ // if ((bw*1000) > s2cspd)
+ // System.out.print("\tOld estimate is greater than
measured; ");
+ // else
+ // System.out.print("\tOld estimate is less than
measured; ");
+ //
+ // if (congestionSignals == -1)
+ // System.out.println("No data collected to calculage new estimate");
+ // else {
+ // if ((bw2*1000) > s2cspd)
+ // System.out.println("New estimate is
greater than measured");
+ // else
+ // System.out.println("New estimate is less
than measured");
+ // }
+ // System.out.println("\tLoss = " + Helpers.formatDouble(loss*100, 2) + "% (" + Helpers.formatDouble(loss2*100, 2) +
+ // "%), Out-of-Order = " +
Helpers.formatDouble(order*100, 2) +
+ // "%, Long tail = {" + tail[0] + ", " + tail[1] + ", " + tail[2] + ", " + tail[3] + "}");
+ // System.out.println("\tDistribution = {" + head[0] + ", " + head[1] + ", " + head[2] + ", " + head[3] +
+ // "}, time spent {r=" + Helpers.formatDouble(rwintime*100, 1) + "% c=" + Helpers.formatDouble(cwndtime*100, 1) +
+ // "% s=" + Helpers.formatDouble(sendtime*100, 1)
+ "%}");
+ // System.out.println("\tAve(min) RTT = " + Helpers.formatDouble(avgrtt, 2) + " (" + minRTT +
+ // ") msec, Buffers = {r=" + maxRwinRcvd + ", c=" + currentCwnd + ", s=" + sndBuf/2 + "}");
+ // System.out.println("\tbw*delay = {r=" + Helpers.formatDouble(recvbwd, 2) + ", c=" +
+ // Helpers.formatDouble(cwndbwd, 2) + ", s=" + Helpers.formatDouble(sendbwd, 2) +
+ // "}, Transitions/sec = {r=" + Helpers.formatDouble(sndLimTransRwin/timesec, 1) + ", c=" +
+ // Helpers.formatDouble(sndLimTransCwnd/timesec,
1) + ", s=" +
+ // Helpers.formatDouble(sndLimTransSender/timesec,
1) + "}");
+ // System.out.println("\tRetransmissions/sec = " + Helpers.formatDouble(pktsRetrans/timesec, 1) + ", Timeouts/sec = " + Helpers.formatDouble(timeouts/timesec, 1) + ", SSThreshold = " + maxSsthresh);
+ // System.out.print("\tMismatch = " + mismatch + " (" + mismatch2 + ":" + mismatch3 + "[" + Helpers.formatDouble(mmorder, 2) + "])");
+ // if (mismatch3 == 1)
+ // System.out.print(" [H=F, S=H]");
+ // if (mismatch2 == 1)
+ // System.out.print(" [H=H, S=F]");
+ // System.out.println(", Cable fault = " + bad_cable + ", Congestion = " + congestion2 +
+ // ", Duplex = " + half_duplex + "\n");
+
+ /* --- experimental congestion detection code --- */
+
+ if (ssCurCwnd == -1) {
+ String snaplogData = mainWindow.getSnaplogData(snaplogFilename, "CurCwnd,SampleRTT", 0, true);
+ StringTokenizer st = new StringTokenizer(snaplogData);
+ boolean slowStart = true;
+ boolean decreasing = false;
+ int prevCWNDval = -1;
+ int prevSampleRTT = -1;
+ int CurCwnd = -1;
+ int CurSampleRTT = - 1;
+ try {
+ while (st.hasMoreTokens()) {
+ st.nextToken(); st.nextToken();
+ CurCwnd = Integer.parseInt(st.nextToken());
+ CurSampleRTT = Integer.parseInt(st.nextToken());
+ if (slowStart) {
+ if (CurCwnd < prevCWNDval) {
+ slowStart = false;
+ maxPeak = prevCWNDval;
+ minPeak = -1;
+ peaks = 1;
+ rawPeaks = 1;
+ decreasing = true;
+ peakInfos.add(new MaxPeakInfo(ssCurCwnd, ssSampleRTT == 0 ? 1 : ssSampleRTT));
+ }
+ else {
+ ssCurCwnd = CurCwnd;
+ ssSampleRTT = CurSampleRTT;
+ if (ssSampleRTT > 0 && fSampleRTT == -1) {
+ fSampleRTT = ssSampleRTT;
+ }
+ }
+ }
+ else {
+ if (CurCwnd < prevCWNDval) {
+ if (prevCWNDval > maxPeak) {
+ maxPeak = prevCWNDval;
+ }
+ rawPeaks += 1;
+ if (!decreasing) {
+ // the max peak
+ peakInfos.add(new MaxPeakInfo(prevCWNDval, prevSampleRTT == 0 ? 1 : prevSampleRTT));
+ peaks += 1;
+ }
+ decreasing = true;
+ }
+ else if (CurCwnd > prevCWNDval) {
+ if ((minPeak == -1) || (prevCWNDval < minPeak)) {
+ minPeak = prevCWNDval;
+ }
+ if (decreasing) {
+ // the min peak
+ peakInfos.add(new MinPeakInfo(prevCWNDval, prevSampleRTT == 0 ? 1 : prevSampleRTT));
+ }
+ decreasing = false;
+ }
+ }
+ prevCWNDval = CurCwnd;
+ prevSampleRTT = CurSampleRTT;
+ }
+ }
+ catch (Exception e) {
+ // do nothing
+ }
+ }
+
+ // 1) extract the bottleneck link type and the average & minimum RTT
+ // values. (If min == 0 then set min = 1msec)
+
+ linkType = decodeLinkSpeed(c2sdata) < 0 ? 1 : decodeLinkSpeed(c2sdata);
+ minrtt = minRTT <= 0 ? 1 : minRTT;
+
+ // 2) find the time required to overshoot link type
+
+ sspd = linkType;
+ ispd = (currentMSS * 8 / 1024.0) / avgrtt;
+ n1 = Math.log(sspd/ispd) / Math.log(2);
+ T1 = n1 * avgrtt;
+
+ // 3) find the number of teeth (assume single loss on overshoot)
+
+ mspd = linkType;
+ lspd = mspd / 2.0;
+ // ispd = currentMSS * 8 / avgrtt;
+ n2 = lspd / ispd;
+ T2 = n2 * avgrtt;
+ lT2 = n2 * maxRTT;
+ uT2 = n2 * fSampleRTT;
+ teeth = (((totaltime / 1000) - T1) / T2) + 1;
+ lTeeth = (((totaltime / 1000) - T1) / lT2) + 1;
+ uTeeth = (((totaltime / 1000) - T1) / uT2) + 1;
+
+ // 4) find out if the connection is buffer limited
+
+ limited = false;
+ if (currentRwinRcvd * 8 / avgrtt < linkType)
+ limited = true;
+
+ // 5)
+
+ if (peaks != -1) {
+ realTeeth = peaks;
+ }
+ else {
+ realTeeth = congestionSignals;
+ }
+ if (Math.abs((realTeeth/teeth) - 1.0) < (0.05 + (1.0/teeth)) && !limited) {
+ normalOperation = true;
+ }
+ else {
+ normalOperation = false;
+ }
+
+ if (ssCurCwnd != -1) {
+ initPeakSpeed = encodeLinkSpeed(PeakInfo.getPeakSpeedInMbps(ssCurCwnd, ssSampleRTT));
+ }
+
+ /* Statistical analysis */
+
+ SortedSet<Integer> curMaxCwnds = new TreeSet<Integer>();
+ SortedSet<Integer> curMinCwnds = new TreeSet<Integer>();
+
+ for (PeakInfo peak : peakInfos) {
+ if (peak instanceof MaxPeakInfo) {
+ curMaxCwnds.add(peak.getCwnd());
+ if (maxPeakSpeed == null ||
+ PeakInfo.getPeakSpeedInMbps(peak.getCwnd(), peak.getSampleRTT()) >
+ PeakInfo.getPeakSpeedInMbps(maxPeakSpeed.getCwnd(), maxPeakSpeed.getSampleRTT())) {
+ maxPeakSpeed = (MaxPeakInfo) peak;
+ }
+ }
+ else {
+ curMinCwnds.add(peak.getCwnd());
+ if (minPeakSpeed == null ||
+ PeakInfo.getPeakSpeedInMbps(peak.getCwnd(), peak.getSampleRTT()) <
+ PeakInfo.getPeakSpeedInMbps(minPeakSpeed.getCwnd(), minPeakSpeed.getSampleRTT())) {
+ minPeakSpeed = (MinPeakInfo) peak;
+ }
+ }
+ }
+
+ // fetch percentiles
+ if (curMaxCwnds.size() > 0) {
+ max25 = curMaxCwnds.toArray(new Integer[]{})[curMaxCwnds.size() * 1 / 4];
+ max50 = curMaxCwnds.toArray(new Integer[]{})[curMaxCwnds.size() * 2 / 4];
+ max75 = curMaxCwnds.toArray(new Integer[]{})[curMaxCwnds.size() * 3 / 4];
+ maxJitter = max75 - max25;
+ }
+ if (curMinCwnds.size() > 0) {
+ min25 = curMinCwnds.toArray(new Integer[]{})[curMinCwnds.size() * 1 / 4];
+ min50 = curMinCwnds.toArray(new Integer[]{})[curMinCwnds.size() * 2 / 4];
+ min75 = curMinCwnds.toArray(new Integer[]{})[curMinCwnds.size() * 3 / 4];
+ minJitter = min75 - min25;
+ }
+
+
+ /* ---------------------------------------------- */
+
+ if (snaplogFilename != null) {
+ ndttraceFilename = "ndttrace." + snaplogFilename.substring(snaplogFilename.indexOf("-")+1);
+ if (!mainWindow.checkTcpDump(ndttraceFilename)) {
+ ndttraceFilename = null;
+ }
+ }
+ }
+
+ private String describeDetLink(int num) {
+ switch (num) {
+ case -2: return "Insufficent Data";
+ case -1: return "System Fault";
+ case 0: return "RTT";
+ case 1: return "Dial-up";
+ case 2: return "T1";
+ case 3: return "Ethernet";
+ case 4: return "T3";
+ case 5: return "FastEthernet";
+ case 6: return "OC-12";
+ case 7: return "Gigabit Ethernet";
+ case 8: return "OC-48";
+ case 9: return "10 Gigabit Enet";
+ case 10: return "Retransmissions";
+ }
+ return "Unknown";
+ }
+
+ private double decodeLinkSpeed(int num) {
+ switch (num) {
+ case 1: return .064;
+ case 0:
+ case 2: return 3;
+ case 3: return 10;
+ case 4: return 45;
+ case 5: return 100;
+ case 6: return 622;
+ case 7: return 1000;
+ case 8: return 2400;
+ case 9: return 10000;
+ }
+ return -1;
+ }
+
+ private int encodeLinkSpeed(double linkSpeed) {
+ if (linkSpeed < .128) {
+ return 1;
+ }
+ if (linkSpeed >= 3 && linkSpeed <= 6) {
+ return 2;
+ }
+ if (linkSpeed >= 10 && linkSpeed <= 20) {
+ return 3;
+ }
+ if (linkSpeed >= 45 && linkSpeed <= 90) {
+ return 4;
+ }
+ if (linkSpeed >= 100 && linkSpeed <= 200) {
+ return 5;
+ }
+ if (linkSpeed >= 622 && linkSpeed < 1000) {
+ return 6;
+ }
+ if (linkSpeed >= 1000 && linkSpeed <= 2000) {
+ return 7;
+ }
+ if (linkSpeed >= 2400 && linkSpeed <= 4800) {
+ return 8;
+ }
+ if (linkSpeed >= 10000 && linkSpeed <= 20000) {
+ return 9;
+ }
+ return -1;
+ }
+
+ public String toString() {
+ return date + " " + ip_addr + " " + port;
+ }
+
+ public String getIP() {
+ return ip_addr;
+ }
+
+ public int getCongestion() {
+ return congestion2;
+ }
+
+ public int getMismatch() {
+ return mismatch;
+ }
+
+ public int getDuplex() {
+ return half_duplex;
+ }
+
+ public int getCable() {
+ return bad_cable;
+ }
+
+ public int getNewCongestion() {
+ return normalOperation ? 0 : 1;
+ }
+
+ public int getInitialPeakSpeedEquality() {
+ if (initPeakSpeed == -1) {
+ return 0;
+ }
+ if (initPeakSpeed == linkType) {
+ return 1;
+ }
+ else if (initPeakSpeed > linkType) {
+ return 2;
+ }
+ else {
+ return 3;
+ }
+ }
+
+ public Component getInfoPane() {
+ final SimpleTextPane panel = new SimpleTextPane();
+ panel.append("Client --> Server data detects link = " + describeDetLink(c2sdata) + "\n");
+ panel.append("Client <-- Server Ack's detect link = " + describeDetLink(c2sack) + "\n");
+ panel.append("Server --> Client data detects link = " + describeDetLink(s2cdata) + "\n");
+ panel.append("Server <-- Client Ack's detect link = " + describeDetLink(s2cack) + "\n\n");
+ panel.append("Acks = " + Helpers.formatDouble(acks, 4) + ", async speed = " +
+ Helpers.formatDouble(aspeed, 4) + ", mismatch3 = " + Helpers.formatDouble(cong, 4) +
+ ", CongOver = " + congestionOverCount + "\n");
+ panel.append(("idle = " + Helpers.formatDouble(idle, 4) + ", timeout/pkts = " +
+ Helpers.formatDouble(touts, 2) + ", %retranmissions = " +
+ Helpers.formatDouble(retrn*100, 2) + ", %increase = " +
+ Helpers.formatDouble(increase*100, 2)) + "\n");
+ panel.append("FastRetrans/Total = " + Helpers.formatDouble(retrn, 4) + ", Fast/Retrans = " +
+ Helpers.formatDouble(fr_ratio, 4) + ", Retrans/sec = " +
+ Helpers.formatDouble(retransec, 4) + "\n\n");
+ panel.append("Throughput to host [" + ip_addr + "] is limited by " + btlneck + "\n\n");
+ panel.append("\tWeb100 says link = " + link + ", speed-chk says link = " + c2sdata + "\n");
+ panel.append("\tSpeed-chk says {" + c2sdata + ", " + c2sack + ", " + s2cdata + ", " + s2cack +
+ "}, Running average = {" + Helpers.formatDouble(runave[0], 1) + ", " +
+ Helpers.formatDouble(runave[1], 1) + ", " + Helpers.formatDouble(runave[2], 1) + ", " +
+ Helpers.formatDouble(runave[3], 1) + "}\n");
+ if ((c2sspd > 1000) && (bw > 1)) {
+ panel.append("\tC2Sspeed = " + Helpers.formatDouble(c2sspd/1000.0, 2) + " Mbps, S2Cspeed = " +
+ Helpers.formatDouble(s2cspd/1000.0, 2) + " Mbps\n");
+ panel.append("CWND-Limited = " + Helpers.formatDouble(s2c2spd/1000.0, 2) + " Mbps, " +
+ "Estimate = " + Helpers.formatDouble(bw, 2) + " Mbps (" +
+ Helpers.formatDouble(bw2, 2) + " Mbps)\n");
+ }
+ else if (c2sspd > 1000) {
+ panel.append("\tC2Sspeed = " + Helpers.formatDouble(c2sspd/1000.0, 2) + " Mbps, S2Cspeed = " +
+ Helpers.formatDouble(s2cspd/1000.0, 2) + " Mbps\n");
+ panel.append("CWND-Limited = " + Helpers.formatDouble(s2c2spd/1000.0, 2) + " Mbps, " +
+ "Estimate = " + Helpers.formatDouble(bw*1000, 2) + " kbps (" +
+ Helpers.formatDouble(bw2*1000, 2) + " kbps)\n");
+ }
+ else if (bw > 1) {
+ panel.append("\tC2Sspeed = " + c2sspd + " kbps, S2Cspeed = " + s2cspd + " kbps\n");
+ panel.append("CWND-Limited: " + s2c2spd + " kbps, Estimate = " +
+ Helpers.formatDouble(bw, 2) + " Mbps (" + Helpers.formatDouble(bw2, 2) + " Mbps)\n");
+ }
+ else {
+ panel.append("\tC2Sspeed = " + c2sspd + " kbps, S2Cspeed = " + s2cspd + " kbps\n");
+ panel.append("CWND-Limited: " + s2c2spd + " kbps, " +
+ "Estimate = " + Helpers.formatDouble(bw*1000, 2) + " kbps (" +
+ Helpers.formatDouble(bw2*1000, 2) + " kbps)\n");
+ }
+ String estimates;
+ if ((bw*1000) > s2cspd)
+ estimates ="\tOld estimate is greater than measured; ";
+ else
+ estimates = "\tOld estimate is less than measured; ";
+
+ if (congestionSignals == -1)
+ estimates += "No data collected to calculage new estimate";
+ else {
+ if ((bw2*1000) > s2cspd)
+ estimates += "New estimate is greater than measured";
+ else
+ estimates += "New estimate is less than measured";
+ }
+ panel.append(estimates + "\n");
+ panel.append("\tLoss = " + Helpers.formatDouble(loss*100, 2) + "% (" +
+ Helpers.formatDouble(loss2*100, 2) + "%), Out-of-Order = " +
+ Helpers.formatDouble(order*100, 2) + "%, Long tail = {" + tail[0] +
+ ", " + tail[1] + ", " + tail[2] + ", " + tail[3] + "}\n");
+ panel.append("\tDistribution = {" + head[0] + ", " + head[1] + ", " + head[2] + ", " + head[3] +
+ "}, time spent {r=" + Helpers.formatDouble(rwintime*100, 1) + "% c=" +
+ Helpers.formatDouble(cwndtime*100, 1) + "% s=" + Helpers.formatDouble(sendtime*100, 1)+"%}\n");
+ panel.append("\tAve(min) RTT = " + Helpers.formatDouble(avgrtt, 2) + " (" + minRTT +
+ ") msec, Buffers = {r=" + maxRwinRcvd + ", c=" + currentCwnd + ", s=" + sndBuf/2 + "}\n");
+ panel.append("\tbw*delay = {r=" + Helpers.formatDouble(recvbwd, 2) + ", c=" +
+ Helpers.formatDouble(cwndbwd, 2) + ", s=" + Helpers.formatDouble(sendbwd, 2) +
+ "}, Transitions/sec = {r=" + Helpers.formatDouble(sndLimTransRwin/timesec, 1) + ", c=" +
+ Helpers.formatDouble(sndLimTransCwnd/timesec, 1) + ", s=" +
+ Helpers.formatDouble(sndLimTransSender/timesec, 1) + "}\n");
+ panel.append("\tRetransmissions/sec = " + Helpers.formatDouble(pktsRetrans/timesec, 1) +
+ ", Timeouts/sec = " + Helpers.formatDouble(timeouts/timesec, 1) + ", SSThreshold = " +
+ maxSsthresh + "\n");
+ String mismatchText = "\tMismatch = " + mismatch + " (" + mismatch2 + ":" + mismatch3 + "[" +
+ Helpers.formatDouble(mmorder, 2) + "])";
+ if (mismatch3 == 1)
+ mismatchText += " [H=F, S=H]";
+ if (mismatch2 == 1)
+ mismatchText += " [H=H, S=F]";
+
+ SimpleAttributeSet green = new SimpleAttributeSet();
+ green.addAttribute(StyleConstants.ColorConstants.Foreground, Color.GREEN);
+
+ SimpleAttributeSet red = new SimpleAttributeSet();
+ red.addAttribute(StyleConstants.ColorConstants.Foreground, Color.RED);
+
+ panel.appendColored(mismatchText + "\n", mismatch == 0 ? green : red);
+
+ panel.appendColored("Cable fault = " + bad_cable + "\n", bad_cable == 0 ? green : red);
+
+ panel.appendColored("Congestion = " + congestion2 + "\n", congestion2 == 0 ? green : red);
+
+ panel.appendColored("Duplex = " + half_duplex + "\n\n", half_duplex == 0 ? green : red);
+
+ panel.append("S2C Snaplog file: ");
+ if (snaplogFilename != null) {
+ if (ssCurCwnd == -1) {
+ panel.appendColored(snaplogFilename + "\n", red);
+ }
+ else {
+ panel.append(snaplogFilename + " ");
+ JButton viewButton = new JButton("View");
+ viewButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ String snaplogData = mainWindow.getSnaplogData(snaplogFilename, null, 0, false);
+ JTextArea area = new JTextArea(snaplogData);
+ area.setEditable(false);
+ JFrame frame = new JFrame("Snaplog variables");
+ frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+ });
+ panel.insertComponent(viewButton);
+ JButton plotButton = new JButton("Plot");
+ plotButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.plotSnaplog(snaplogFilename);
+ }
+ });
+ panel.insertComponent(plotButton);
+ JButton cPlotButton = new JButton("Plot CWND");
+ cPlotButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.plotSnaplogCWND(snaplogFilename);
+ }
+ });
+ panel.insertComponent(cPlotButton);
+ }
+ }
+ else {
+ panel.appendColored("N/A", red);
+ }
+
+ panel.append("\nC2S Snaplog file: ");
+ if (c2sSnaplogFilename != null) {
+ if (ssCurCwnd == -1) {
+ panel.appendColored(c2sSnaplogFilename + "\n", red);
+ }
+ else {
+ panel.append(c2sSnaplogFilename + " ");
+ JButton viewButton = new JButton("View");
+ viewButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ String snaplogData = mainWindow.getSnaplogData(c2sSnaplogFilename, null, 0, false);
+ JTextArea area = new JTextArea(snaplogData);
+ area.setEditable(false);
+ JFrame frame = new JFrame("Snaplog variables");
+ frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+ });
+ panel.insertComponent(viewButton);
+ JButton plotButton = new JButton("Plot");
+ plotButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.plotSnaplog(c2sSnaplogFilename);
+ }
+ });
+ panel.insertComponent(plotButton);
+ JButton cPlotButton = new JButton("Plot CWND");
+ cPlotButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.plotSnaplogCWND(c2sSnaplogFilename);
+ }
+ });
+ panel.insertComponent(cPlotButton);
+ }
+ }
+ else {
+ panel.appendColored("N/A", red);
+ }
+
+ panel.append("\nTcpdump trace file: ");
+ if (ndttraceFilename != null) {
+ panel.append(ndttraceFilename + " ");
+
+ JButton viewButton = new JButton("View");
+ viewButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ String tcpdumpData = mainWindow.getTcpdumpData(ndttraceFilename);
+ JTextArea area = new JTextArea(tcpdumpData);
+ area.setEditable(false);
+ JFrame frame = new JFrame("tcpdump trace");
+ frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
+ frame.setSize(800, 600);
+ frame.setVisible(true);
+ }
+ });
+ panel.insertComponent(viewButton);
+ JButton plotButton = new JButton("Plot");
+ plotButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ mainWindow.plotTcpdumpS(ndttraceFilename);
+ }
+ });
+ panel.insertComponent(plotButton);
+ }
+ else {
+ panel.appendColored("N/A", red);
+ }
+
+ panel.append("\nCputime trace file: ");
+ if (cputraceFilename != null) {
+ panel.append(cputraceFilename + " ");
+ JButton viewButton = new JButton("View");
+ viewButton.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e) {
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/ResultsList.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,25 @@
+package edu.internet2.ndt;
+
+import java.util.Collection;
+import java.util.Vector;
+
+import javax.swing.AbstractListModel;
+
+
+public class ResultsList extends AbstractListModel {
+
+ private static final long serialVersionUID = 1L;
+ private Vector<ResultsContainer> results = new
Vector<ResultsContainer>();
+
+ public ResultsList(Collection<ResultsContainer> results) {
+ this.results.addAll(results);
+ }
+ public Object getElementAt(int arg0) {
+ return results.get(arg0);
+ }
+
+ public int getSize() {
+ return results.size();
+ }
+
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SimpleTextPane.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,39 @@
+package edu.internet2.ndt;
+
+import javax.swing.JTextPane;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.AttributeSet;
+
+import java.awt.Component;
+
+public class SimpleTextPane extends JTextPane
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void append(String text)
+ {
+ try {
+ getStyledDocument().insertString(getStyledDocument().getLength(), text, null);
+ }
+ catch (BadLocationException e) {
+ System.out.println("WARNING: failed to append text to the text pane! [" + text + "]");
+ }
+ }
+
+ public void appendColored(String text, AttributeSet attributes)
+ {
+ try {
+ getStyledDocument().insertString(getStyledDocument().getLength(), text, attributes);
+ }
+ catch (BadLocationException e) {
+ System.out.println("WARNING: failed to append text to the text pane! [" + text + "]");
+ }
+ }
+
+ public void insertComponent(Component c)
+ {
+ setSelectionStart(getStyledDocument().getLength());
+ setSelectionEnd(getStyledDocument().getLength());
+ super.insertComponent(c);
+ }
+ }
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SnaplogFrame.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,92 @@
+package edu.internet2.ndt;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.BoxLayout;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import java.awt.Container;
+
+public class SnaplogFrame extends JFrame
+{
+ private static final long serialVersionUID = 1L;
+ private JTextField genplot = new JTextField(20);
+ private JTextField xplot = new JTextField(20);
+ private JTextField tcptrace = new JTextField(20);
+ private JTextField snaplogs = new JTextField(20);
+ private JTextField variables = new JTextField(40);
+
+ public SnaplogFrame(JAnalyze mainWindow) {
+
+ Container cp = getContentPane();
+ cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));
+ JPanel panel = new JPanel();
+ JPanel tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Genplot:"));
+ genplot.setText(mainWindow.getProperties().getProperty("genplot", "/usr/local/bin/genplot"));
+ genplot.getDocument().addDocumentListener(new PropertyListener(mainWindow, "genplot"));
+ panel.add(genplot);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Xplot:"));
+ xplot.setText(mainWindow.getProperties().getProperty("xplot", "/usr/local/bin/xplot"));
+ xplot.getDocument().addDocumentListener(new PropertyListener(mainWindow, "xplot"));
+ panel.add(xplot);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Tcptrace:"));
+ tcptrace.setText(mainWindow.getProperties().getProperty("tcptrace", "/usr/local/bin/tcptrace"));
+ tcptrace.getDocument().addDocumentListener(new PropertyListener(mainWindow, "tcptrace"));
+ panel.add(tcptrace);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Snaplog directory:"));
+ snaplogs.setText(mainWindow.getProperties().getProperty("snaplogs", ""));
+ snaplogs.getDocument().addDocumentListener(new PropertyListener(mainWindow, "snaplogs"));
+ panel.add(snaplogs);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+ panel = new JPanel();
+ tmpPanel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel("Variables:"));
+ variables.setText(mainWindow.getProperties().getProperty("variables",
+
"CurCwnd,SampleRTT,SlowStart,MaxRTT,CurSsthresh,CongestionSignals"));
+ variables.getDocument().addDocumentListener(new PropertyListener(mainWindow, "variables"));
+ panel.add(variables);
+ tmpPanel.add(panel);
+ cp.add(tmpPanel);
+
+ setSize(515, 180);
+ }
+
+ public String getGenplot() {
+ return genplot.getText();
+ }
+
+ public String getXplot() {
+ return xplot.getText();
+ }
+
+ public String getTcptrace() {
+ return tcptrace.getText();
+ }
+
+ public String getSnaplogs() {
+ return snaplogs.getText();
+ }
+
+ public String getVariables() {
+ return variables.getText();
+ }
+}
=======================================
--- /dev/null
+++ /branches/AppletIssue92/janalyze/src/edu/internet2/ndt/SwingWorker.java Fri Feb 7 10:49:25 2014 UTC
@@ -0,0 +1,130 @@
+package edu.internet2.ndt;
+
+import javax.swing.SwingUtilities;
+
+/**
+ * This is the 3rd version of SwingWorker (also known as
+ * SwingWorker 3), an abstract class that you subclass to
+ * perform GUI-related work in a dedicated thread. For
+ * instructions on and examples of using this class, see:
+ *
+ * http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html
+ *
+ * Note that the API changed slightly in the 3rd version:
+ * You must now invoke start() on the SwingWorker after
+ * creating it.
+ */
+public abstract class SwingWorker {
+ private Object value; // see getValue(), setValue()
+
+ /**
+ * Class to maintain reference to current worker thread
+ * under separate synchronization control.
+ */
+ private static class ThreadVar {
+ private Thread thread;
+ ThreadVar(Thread t) { thread = t; }
+ synchronized Thread get() { return thread; }
+ synchronized void clear() { thread = null; }
+ }
+
+ private ThreadVar threadVar;
+
+ /**
+ * Get the value produced by the worker thread, or null if it
+ * hasn't been constructed yet.
+ */
+ protected synchronized Object getValue() {
+ return value;
+ }
+
+ /**
+ * Set the value produced by worker thread
+ */
+ private synchronized void setValue(Object x) {
+ value = x;
+ }
+
+ /**
+ * Compute the value to be returned by the <code>get</code> method.
+ */
+ public abstract Object construct();
+
+ /**
+ * Called on the event dispatching thread (not on the worker thread)
+ * after the <code>construct</code> method has returned.
+ */
+ public void finished() {
+ }
+
+ /**
+ * A new method that interrupts the worker thread. Call this method
+ * to force the worker to stop what it's doing.
+ */
+ public void interrupt() {
+ Thread t = threadVar.get();
+ if (t != null) {
+ t.interrupt();
+ }
+ threadVar.clear();
+ }
+
+ /**
+ * Return the value created by the <code>construct</code> method.
+ * Returns null if either the constructing thread or the current
+ * thread was interrupted before a value was produced.
+ *
+ * @return the value created by the <code>construct</code> method
+ */
+ public Object get() {
+ while (true) {
+ Thread t = threadVar.get();
+ if (t == null) {
+ return getValue();
+ }
+ try {
+ t.join();
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt(); // propagate
+ return null;
+ }
+ }
+ }
+
+ /**
+ * Start a thread that will call the <code>construct</code> method
+ * and then exit.
+ */
+ public SwingWorker() {
+ final Runnable doFinished = new Runnable() {
+ public void run() { finished(); }
+ };
+
+ Runnable doConstruct = new Runnable() {
+ public void run() {
+ try {
+ setValue(construct());
+ }
+ finally {
+ threadVar.clear();
+ }
+
+ SwingUtilities.invokeLater(doFinished);
+ }
+ };
+
+ Thread t = new Thread(doConstruct);
+ threadVar = new ThreadVar(t);
+ }
+
+ /**
+ * Start the worker thread.
+ */
+ public void start() {
+ Thread t = threadVar.get();
+ if (t != null) {
+ t.start();
+ }
+ }
+}
=======================================
--- /branches/AppletIssue92/Admin/Admin.java Wed Jun 30 15:40:21 2004 UTC
+++ /dev/null
@@ -1,258 +0,0 @@
-/* This applet provides an administrator view of the NDT usage
- * statistics. It was originally developed for the SC-03 conference.
- * An admin script will run to collect the necessary data. This data
- * is then feed into this applet via the PARM/VALUE pairs in the html
- * file.
- *
- * This applet simply draws the bar graph that appears on the
- * html page.
- *
- * Admin.java by Richard A. Carlson - September 25, 2003
- */
-
-import java.awt.*;
-import java.awt.geom.*;
-import java.awt.font.*;
-import java.awt.image.*;
-import java.applet.Applet;
-
-public class Admin extends Applet {
-
- Color fill, outline, textcolor;
- Font font;
- FontMetrics metrics;
- private String TARGET1 = "Fault";
- private String TARGET2 = "RTT";
- private String TARGET3 = "Dial-up";
- private String TARGET4 = "T1";
- private String TARGET5 = "Enet";
- private String TARGET6 = "T3";
- private String TARGET7 = "FastE";
- private String TARGET8 = "OC-12";
- private String TARGET9 = "GigE";
- private String TARGET10 = "OC-48";
- private String TARGET11 = "tenGE";
- private String TARGET12 = "Total";
-
-
- public void init() {
-
- fill = new Color(0,255,128); // (RGB values)
- outline = Color.black;
-
- font = new Font("SansSerif", Font.PLAIN, 12);
- metrics = this.getFontMetrics(font);
- }
-
-
- public void paint(Graphics g) {
-
- int Fault, RTT, Dialup, T1, Enet, T3, FastE;
- int OC12, GigE, OC48, tenGE, Total, i;
- int f;
- String val;
-
- val = getParameter(TARGET1);
- // System.err.println("Fault = " + val);
- Fault = Integer.parseInt(val);
- val = getParameter(TARGET2);
- // System.err.println("RTT = " + val);
- RTT = Integer.parseInt(val);
- val = getParameter(TARGET3);
- // System.err.println("Dialup = " + val);
- Dialup = Integer.parseInt(val);
- val = getParameter(TARGET4);
- // System.err.println("T1 = " + val);
- T1 = Integer.parseInt(val);
- val = getParameter(TARGET5);
- // System.err.println("Enet = " + val);
- Enet = Integer.parseInt(val);
- val = getParameter(TARGET6);
- // System.err.println("T3 = " + val);
- T3 = Integer.parseInt(val);
- val = getParameter(TARGET7);
- // System.err.println("FastE = " + val);
- FastE = Integer.parseInt(val);
- val = getParameter(TARGET8);
- // System.err.println("OC12 = " + val);
- OC12 = Integer.parseInt(val);
- val = getParameter(TARGET9);
- // System.err.println("GigE = " + val);
- GigE = Integer.parseInt(val);
- val = getParameter(TARGET10);
- // System.err.println("OC48 = " + val);
- OC48 = Integer.parseInt(val);
- val = getParameter(TARGET11);
- // System.err.println("tenGE = " + val);
- tenGE = Integer.parseInt(val);
- val = getParameter(TARGET12);
- Total = Integer.parseInt(val);
-
- g.setFont(font);
-
- // draw X/Y axis lines with tick marks on the Y axis
- g.setColor(outline);
- g.drawLine(60, 350, 60, 50);
- g.drawLine(45, 350, 510, 350);
- g.drawString("0", 30, 355);
- g.drawLine(45, 290, 60, 290);
- g.drawString("20", 28, 295);
- g.drawLine(45, 230, 60, 230);
- g.drawString("40", 28, 235);
- g.drawLine(45, 170, 60, 170);
- g.drawString("60", 28, 175);
- g.drawLine(45, 110, 60, 110);
- g.drawString("80", 28, 115);
- g.drawLine(45, 50, 60, 50);
- g.drawString("100", 23, 55);
-
- // draw green boxes representing bars for each possible link type
- f = (int)(((double)Fault/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(70, (349 - f), 30, (1 + f));
- // g.drawString("Fault", 70, 370);
- g.setColor(outline);
- g.drawRect(70, (349 - f), 30, (1 + f));
- g.drawString("Fault", 70, 370);
- if (Fault > 0) {
- val = "(" + Integer.toString(Fault) + ")";
- g.drawString(val, (70 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)RTT/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(110, (349 - f), 30, (1 + f));
- // g.drawString("RTT", 110, 385);
- g.setColor(outline);
- g.drawRect(110, (349 - f), 30, (1 + f));
- g.drawString("RTT", 110, 385);
- if (RTT > 0) {
- val = "(" + Integer.toString(RTT) + ")";
- g.drawString(val, (110 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)Dialup/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(150, (349 - f), 30, (1 + f));
- // g.drawString("Dial-up", 150, 370);
- g.setColor(outline);
- g.drawRect(150, (349 - f), 30, (1 + f));
- g.drawString("Dial-up", 150, 370);
- if (Dialup > 0) {
- val = "(" + Integer.toString(Dialup) + ")";
- g.drawString(val, (150 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)T1/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(190, (349 - f), 30, (1 + f));
- // g.drawString("Cable/DSL", 180, 385);
- g.setColor(outline);
- g.drawRect(190, (349 - f), 30, (1 + f));
- g.drawString("Cable/DSL", 180, 385);
- if (T1 > 0) {
- val = "(" + Integer.toString(T1) + ")";
- g.drawString(val, (190 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)Enet/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(230, (349 - f), 30, (1 + f));
- // g.drawString("Ethernet", 230, 370);
- g.setColor(outline);
- g.drawRect(230, (349 - f), 30, (1 + f));
- g.drawString("Ethernet", 230, 370);
- if (Enet > 0) {
- val = "(" + Integer.toString(Enet) + ")";
- g.drawString(val, (230 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)T3/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(270, (349 - f), 30, (1 + f));
- // g.drawString("T3/DS3", 270, 385);
- g.setColor(outline);
- g.drawRect(270, (349 - f), 30, (1 + f));
- g.drawString("T3/DS3", 270, 385);
- if (T3 > 0) {
- i = (int)(((double)T3/300)*(double)Total) + 1;
- val = "(" + Integer.toString(T3) + ")";
- g.drawString(val, (270 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)FastE/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(310, (349 - f), 30, (1 + f));
- // g.drawString("FastEnet", 310, 370);
- g.setColor(outline);
- g.drawRect(310, (349 - f), 30, (1 + f));
- g.drawString("FastEnet", 310, 370);
- if (FastE > 0) {
- val = "(" + Integer.toString(FastE) + ")";
- g.drawString(val, (310 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)OC12/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(350, (349 - f), 30, (1 + f));
- // g.drawString("OC-12", 350, 385);
- g.setColor(outline);
- g.drawRect(350, (349 - f), 30, (1 + f));
- g.drawString("OC-12", 350, 385);
- if (OC12 > 0) {
- val = "(" + Integer.toString(OC12) + ")";
- g.drawString(val, (360 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)GigE/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(390, (349 - f), 30, (1 + f));
- // g.drawString("GigEnet", 390, 370);
- g.setColor(outline);
- g.drawRect(390, (349 - f), 30, (1 + f));
- g.drawString("GigEnet", 390, 370);
- if (GigE > 0) {
- val = "(" + Integer.toString(GigE) + ")";
- g.drawString(val, (390 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)OC48/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(430, (349 - f), 30, (1 + f));
- // g.drawString("OC-48", 430, 385);
- g.setColor(outline);
- g.drawRect(430, (349 - f), 30, (1 + f));
- g.drawString("OC-48", 430, 385);
- if (OC48 > 0) {
- val = "(" + Integer.toString(OC48) + ")";
- g.drawString(val, (430 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- f = (int)(((double)tenGE/(double)Total)*300);
- g.setColor(fill);
- g.fillRect(470, (349 - f), 30, (1 + f));
- // g.drawString("10 GigE", 470, 370);
- g.setColor(outline);
- g.drawRect(470, (349 - f), 30, (1 + f));
- g.drawString("10 GigE", 470, 370);
- if (tenGE > 0) {
- val = "(" + Integer.toString(tenGE) + ")";
- g.drawString(val, (470 + ((30 - metrics.stringWidth(val))/2)), (339 - f));
- }
-
- font = new Font("SansSerif", Font.BOLD, 18);
- g.setFont(font);
- g.setColor(outline);
- g.drawString("Bottleneck Link Type (Sub-Total)", 150, 40);
- font = new Font("SansSerif", Font.BOLD, 16);
- g.setFont(font);
- g.drawString("P", 5, 140);
- g.drawString("E", 5, 160);
- g.drawString("R", 5, 180);
- g.drawString("C", 5, 200);
- g.drawString("E", 5, 220);
- g.drawString("N", 5, 240);
- g.drawString("T", 5, 260);
- }
-
-}
=======================================
--- /branches/AppletIssue92/Applet/Message.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Class to define Message. Messages are composed of a "type" and a body. Some
- * examples of message types are : COMM_FAILURE, SRV_QUEUE, MSG_LOGIN,
- * TEST_PREPARE. Messages are defined to have a "length" field too. Currently, 2
- * bytes of the message "body" byte array are often used to store length (For
- * example, second/third array positions)
- *
- * <p>
- * TODO for a later release: It may be worthwhile exploring whether MessageTypes
- * could be merged here instead of being located in NDTConstants. Message/Type
- * could also be made into an enumeration and checks for the current MessageType
- * being assigned could be incorporated.
- *
- * @see MessageType for more Message Types.
- *
- */
-public class Message {
-
- // TODO: Could make these private and test changes in Protocol class.
For
- // later release
- byte _yType;
- byte[] _yaBody;
-
- /**
- * Get Message Type
- *
- * @return byte indicating Message Type
- * */
- public byte getType() {
- return _yType;
- }
-
- /**
- * Set Message Type
- *
- * @param bParamType
- * byte indicating Message Type
- * */
- public void setType(byte bParamType) {
- this._yType = bParamType;
- }
-
- /**
- * Get Message body as array
- *
- * @return byte array message body
- * */
- public byte[] getBody() {
- return _yaBody;
- }
-
- /**
- * Set Message body, given a byte array input
- *
- * @param baParamBody
- * message body byte array
- *
- * */
- public void setBody(byte[] baParamBody) {
- int iParamSize = 0;
- if (baParamBody != null) {
- iParamSize = baParamBody.length;
- }
- _yaBody = new byte[iParamSize];
- System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
- }
-
- /**
- * Set Message body, given a byte array and a size parameter. This
may be
- * useful if user wants to initialize the message, and then continue
to
- * populate it later. This method is unused currently.
- *
- * @param iParamSize
- * byte array size
- * @param baParamBody
- * message body byte array
- *
- * */
- public void setBody(byte[] baParamBody, int iParamSize) {
- _yaBody = new byte[iParamSize];
- System.arraycopy(baParamBody, 0, _yaBody, 0, iParamSize);
- }
-
- /**
- * Utility method to initialize Message body
- *
- * @param iParamSize
- * byte array size
- *
- * */
- public void initBodySize(int iParamSize) {
- this._yaBody = new byte[iParamSize];
- }
-
-}
=======================================
--- /branches/AppletIssue92/Applet/MessageType.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Class to define the NDTP control message types
- * */
-
-public class MessageType {
-
- public static final byte COMM_FAILURE = 0;
- public static final byte SRV_QUEUE = 1;
- public static final byte MSG_LOGIN = 2;
- public static final byte TEST_PREPARE = 3;
- public static final byte TEST_START = 4;
- public static final byte TEST_MSG = 5;
- public static final byte TEST_FINALIZE = 6;
- public static final byte MSG_ERROR = 7;
- public static final byte MSG_RESULTS = 8;
- public static final byte MSG_LOGOUT = 9;
- public static final byte MSG_WAITING = 10;
-
-}
=======================================
--- /branches/AppletIssue92/Applet/NDTConstants.java Wed Oct 16 08:50:36 2013 UTC
+++ /dev/null
@@ -1,211 +0,0 @@
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import javax.swing.JOptionPane;
-
-/**
- *
- * Class to hold constants. These constants include both Protocol related
- * constants and non-protocol related ones which are used by the software. The
- * different sections of constants are listed under appropriate "sections".
- *
- */
-public class NDTConstants {
-
- // Section: System variables
- // used by the META tests
- public static final String META_CLIENT_OS = "client.os.name";
- public static final String META_BROWSER_OS = "client.browser.name";
- public static final String META_CLIENT_KERNEL_VERSION = "client.kernel.version";
- public static final String META_CLIENT_VERSION = "client.version";
- public static final String META_CLIENT_APPLICATION = "client.application";
-
- /*
- * TODO for a later release: Version could be moved to some
"configurable"
- * or "property" area instead of being in code that needs compilation.
- */
- public static final String VERSION = "3.6.6-rc1";
-
- public static final String NDT_TITLE_STR = "Network Diagnostic Tool Client v";
-
- // Section: Test type
- public static final byte TEST_MID = (1 << 0);
- public static final byte TEST_C2S = (1 << 1);
- public static final byte TEST_S2C = (1 << 2);
- public static final byte TEST_SFW = (1 << 3);
- public static final byte TEST_STATUS = (1 << 4);
- public static final byte TEST_META = (1 << 5);
-
- // Section: Firewall test status
- public static final int SFW_NOTTESTED = 0;
- public static final int SFW_NOFIREWALL = 1;
- public static final int SFW_UNKNOWN = 2;
- public static final int SFW_POSSIBLE = 3;
-
- public static final double VIEW_DIFF = 0.1;
-
- public static final String TARGET1 = "U";
- public static final String TARGET2 = "H";
-
- // NDT pre-fixed port ID
- public static final int CONTROL_PORT_DEFAULT = 3001;
-
- // Section: SRV-QUEUE message status constants
- public static final int SRV_QUEUE_TEST_STARTS_NOW = 0;
- public static final int SRV_QUEUE_SERVER_FAULT = 9977;
- public static final int SRV_QUEUE_SERVER_BUSY = 9988;
- public static final int SRV_QUEUE_HEARTBEAT = 9990;
- public static final int SRV_QUEUE_SERVER_BUSY_60s = 9999;
-
- // Section: Middlebox test related constants
- public static final int MIDDLEBOX_PREDEFINED_MSS = 8192;// 8k buffer
size
- public static final int ETHERNET_MTU_SIZE = 1456;
-
- // Section: SFW test related constants
- public static final String SFW_PREDEFINED_TEST_MESSAGE = "Simple firewall test";
-
- private static ResourceBundle _rscBundleMessages;
- public static final String TCPBW100_MSGS = "Tcpbw100_msgs";
- public static final int PREDEFINED_BUFFER_SIZE = 8192; // 8k buffer
size
-
- // Section: Data rate indicator integers
- public static final int DATA_RATE_INSUFFICIENT_DATA = -2;
- public static final int DATA_RATE_SYSTEM_FAULT = -1;
- public static final int DATA_RATE_RTT = 0;
- public static final int DATA_RATE_DIAL_UP = 1;
- public static final int DATA_RATE_T1 = 2;
- public static final int DATA_RATE_ETHERNET = 3;
- public static final int DATA_RATE_T3 = 4;
- public static final int DATA_RATE_FAST_ETHERNET = 5;
- public static final int DATA_RATE_OC_12 = 6;
- public static final int DATA_RATE_GIGABIT_ETHERNET = 7;
- public static final int DATA_RATE_OC_48 = 8;
- public static final int DATA_RATE_10G_ETHERNET = 9;
- // public static final int DATA_RATE_RETRANSMISSIONS = 10;
-
- // Section: Data rate indicator strings
- public static final String T1_STR = "T1";
- public static final String T3_STR = "T3";
- public static final String ETHERNET_STR = "Ethernet";
- public static final String FAST_ETHERNET = "FastE";
- public static final String OC_12_STR = "OC-12";
- public static final String GIGABIT_ETHERNET_STR = "GigE";
- public static final String OC_48_STR = "OC-48";
- public static final String TENGIGABIT_ETHERNET_STR = "10 Gig";
- public static final String SYSTEM_FAULT_STR = "systemFault";
- public static final String DIALUP_STR = "dialup2"; // unused, commenting out
-
// for now
- public static final String RTT_STR = "rtt"; // round trip time
-
- // Section: RFC 1323 options ( Seems like 0/1/2/3 are the options available)
-
- public static final int RFC_1323_DISABLED = 0;
- public static final int RFC_1323_ENABLED = 1;
- // Note Self disabled from servers standpoint i.e. disabled by server
- public static final int RFC_1323_SELF_DISABLED = 2;
- public static final int RFC_1323_PEER_DISABLED = 3;
-
- // Section: RFC2018 SAck
- public static final int RFC_2018_ENABLED = 1;
-
- // Section: RFC2018 Nagle
- public static final int RFC_896_ENABLED = 1;
-
- // Section: RFC3168
- public static final int RFC_3168_ENABLED = 1;
- // Note Self disabled from servers standpoint i.e. disabled by server
- public static final int RFC_3168_SELF_DISABLED = 2;
- public static final int RFC_3168_PEER_DISABLED = 3;
-
- // Section: Buffer limitation test thresholds
- public static final float BUFFER_LIMITED = 0.15f; //unused right now
-
-
- // Section: TCP constants
- public static final int TCP_MAX_RECV_WIN_SIZE = 65535;
-
- // Section: Data units
- public static final int KILO = 1000; // Used in conversions from seconds->mS,
- public static final int KILO_BITS = 1024;// Used in kilobits->bits conversions
- public static final double EIGHT = 8.0; // Used in octal number, conversions from Bytes-> bits etc
- // EIGHT is a double to minimize overflow when converting.
-
- // Section: Duplex mismatch conditions
- public static final int DUPLEX_OK_INDICATOR = 0;
- public static final int DUPLEX_NOK_INDICATOR = 1;
- public static final int DUPLEX_SWITCH_FULL_HOST_HALF = 2;
- public static final int DUPLEX_SWITCH_HALF_HOST_FULL = 3;
- public static final int DUPLEX_SWITCH_FULL_HOST_HALF_POSS = 4;
- public static final int DUPLEX_SWITCH_HALF_HOST_FULL_POSS = 5;
- public static final int DUPLEX_SWITCH_HALF_HOST_FULL_WARN = 7;
-
- // Section: cable status indicators
- public static final int CABLE_STATUS_OK = 0;
- public static final int CABLE_STATUS_BAD = 1;
-
- // Section: Congestion status
- public static final int CONGESTION_NONE = 0;
- public static final int CONGESTION_FOUND = 1;
-
- // Section: miscellaneous
- public static final int SOCKET_FREE_PORT_INDICATOR = 0;
- public static final String LOOPBACK_ADDRS_STRING = "127.0.0.1";
- public static final int PERCENTAGE = 100;
-
- // constant to indicate protocol read success
- public static final int PROTOCOL_MSG_READ_SUCCESS = 0;
-
- // system variables could be declared as strings too
- // half_duplex:, country , etc.
-
- /**
- * Initializes a few constants
- *
- * @param paramLocale
- * local Locale object
- * */
- public static void initConstants(Locale paramLocale) {
- try {
- _rscBundleMessages =
ResourceBundle.getBundle(TCPBW100_MSGS,
- paramLocale);
- System.out.println("Obtained messages ");
- } catch (Exception e) {
- JOptionPane.showMessageDialog(null,
- "Error while loading language
files:\n" + e.getMessage());
- e.printStackTrace();
- }
-
- } // end method
-
- /**
- * Initializes a few constants
- *
- * @param paramStrLang
- * local Language String
- * @param paramStrCountry
- * local country String
- * */
- public static void initConstants(String paramStrLang, String paramStrCountry) {
- try {
- Locale locale = new Locale(paramStrLang,
paramStrCountry);
- _rscBundleMessages =
ResourceBundle.getBundle("Tcpbw100_msgs",
- locale);
- } catch (Exception e) {
- JOptionPane.showMessageDialog(null,
- "Error while loading language
files:\n" + e.getMessage());
- e.printStackTrace();
- }
- }// end method initconstants
-
- /**
- * Getter method for to fetch from resourceBundle
- *
- * @param paramStrName
- * name of parameter to be fetched
- * @return Value of parameter input
- */
- public static String getMessageString(String paramStrName) {
- return _rscBundleMessages.getString(paramStrName);
- }
-
-}
=======================================
--- /branches/AppletIssue92/Applet/NDTUtils.java Fri Oct 18 06:48:19 2013 UTC
+++ /dev/null
@@ -1,148 +0,0 @@
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ResourceBundle;
-
-/**
- * Class that defines utility methods used by the NDT code
- */
- public class NDTUtils {
-
- /**
- * Utility method to print double value up to the hundredth place.
- *
- * @param paramDblToFormat
- * Double numbers to format
- * @return String value of double number
- */
- public static String prtdbl(double paramDblToFormat) {
- String str = null;
- int i;
-
- if (paramDblToFormat == 0) {
- return ("0");
- }
- str = Double.toString(paramDblToFormat);
- i = str.indexOf(".");
- i = i + 3;
- if (i > str.length()) {
- i = i - 1;
- }
- if (i > str.length()) {
- i = i - 1;
- }
- return (str.substring(0, i));
- } // prtdbl() method ends
-
-
- /**
- * Utility method to print Text values for data speed related keys.
- *
- * @param paramIntVal
- * integer parameter for which we find text value
- * @return String Textual name for input parameter
- */
- public static String prttxt(int paramIntVal, ResourceBundle paramResBundObj) {
- String strNameTxt = null;
-
- switch (paramIntVal) {
- case (NDTConstants.DATA_RATE_SYSTEM_FAULT):
- strNameTxt = paramResBundObj
-
.getString(NDTConstants.SYSTEM_FAULT_STR);
- break;
- case NDTConstants.DATA_RATE_RTT:
- strNameTxt =
paramResBundObj.getString(NDTConstants.RTT_STR);
- break;
- case NDTConstants.DATA_RATE_DIAL_UP:
- strNameTxt =
paramResBundObj.getString(NDTConstants.DIALUP_STR);
- break;
- case NDTConstants.DATA_RATE_T1:
- strNameTxt = NDTConstants.T1_STR;
- break;
- case NDTConstants.DATA_RATE_ETHERNET:
- strNameTxt = NDTConstants.ETHERNET_STR;
- break;
- case NDTConstants.DATA_RATE_T3:
- strNameTxt = NDTConstants.T3_STR;
- break;
- case NDTConstants.DATA_RATE_FAST_ETHERNET:
- strNameTxt = NDTConstants.FAST_ETHERNET;
- break;
- case NDTConstants.DATA_RATE_OC_12:
- strNameTxt = NDTConstants.OC_12_STR;
- break;
- case NDTConstants.DATA_RATE_GIGABIT_ETHERNET:
- strNameTxt = NDTConstants.GIGABIT_ETHERNET_STR;
- break;
- case NDTConstants.DATA_RATE_OC_48:
- strNameTxt = NDTConstants.OC_48_STR;
- break;
- case NDTConstants.DATA_RATE_10G_ETHERNET:
- strNameTxt = NDTConstants.TENGIGABIT_ETHERNET_STR;
- break;
- } // end switch
- return (strNameTxt);
- } // prttxt() method ends
-
- /**
- * Utility method to check if the given string is empty ("") or null.
- *
- * @param str
- * String to check
- * @return true is the given string is empty; otherwise false
- */
- public static boolean isEmpty(String str) {
- return str == null || str.length() == 0;
- } // isEmpty() method ends
-
- /**
- * Utility method to check if the given string is not empty ("") or
null.
- *
- * @param str
- * String to check
- * @return true is the given string is not empty; otherwise false
- */
- public static boolean isNotEmpty(String str) {
- return !isEmpty(str);
- } // isNotEmpty() method ends
-
-
- /**
- * Utility method to create mailTo link
- *
- * @param name
- * user identifier
- * @param host
- * fully qualified domain name
- * @param subject
- * email subject
- * @param body
- * email body
- * @return created mailTo link with the encoded parameters
- */
- public static String mailTo(final String name, final String host,
- final String
subject, final String body) {
- return String.format(
-
"mailto:%s@%s?subject=%s&body=%s",
- new Object[]{
- urlEncode(name),
urlEncode(host),
- urlEncode(subject),
urlEncode(body)
- }
- );
- } // mailTo() method ends
-
- /**
- * Utility method to encode the given string using UTF-8 encoding
- *
- * @param str
- * String to encode
- * @return encoded string with replacing '+' to '%20'
- */
- public static String urlEncode(String str) {
- try {
- return URLEncoder.encode(str, "utf-8").replace("+",
"%20");
- } catch (UnsupportedEncodingException e) {
- throw new IllegalArgumentException(e);
- }
- } // urlEncode() method ends
-
-}
=======================================
--- /branches/AppletIssue92/Applet/NewFrame.java Fri Oct 18 06:48:19 2013 UTC
+++ /dev/null
@@ -1,35 +0,0 @@
-import java.awt.*;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-
-import javax.swing.*;
-
-/**
- * Utility class that creates a new "Frame" with a window closing functionality.
- * This Class is used to provide a base "frame" for the Statistics, Details and
- * Options windows
- *
- * This class is declared separately so that it can be easily extended by users
- * to customize based on individual needs
- *
- */
-public class NewFrame extends JFrame {
- /**
- * Auto-generated compiler constant that does not contribute to
classes'
- * functionality
- */
- private static final long serialVersionUID = 8990839319520684317L;
-
- /**
- * Constructor
- **/
- public NewFrame(final JApplet parent) throws HeadlessException {
- addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent event) {
- parent.requestFocus();
- dispose();
- }
- });
- }
-
-} // class: NewFrame
=======================================
--- /branches/AppletIssue92/Applet/OsfwWorker.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,173 +0,0 @@
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- * OsfwWorker creates a thread that listens for a message from the server. It
- * functions to check if the server has sent a message that is valid and
- * sufficient to determine if the server->client direction has a fire-wall.
- *
- * <p>
- * As part of the simple firewall test, the Server must try to connect to the
- * Client's ephemeral port and send a TEST_MSG message containing a pre-defined
- * string "Simple firewall test" of 20 chars using this newly created
- * connection. This class implements this functionality.
- *
- * The result of the test is set back into the Tcpbw100._iS2cSFWResult variable
- * (using setter methods) for the test results to be interpreted later
- * */
-
-public class OsfwWorker implements Runnable {
-
- private ServerSocket _srvSocket;
- private int _iTestTime;
- private boolean _iFinalized = false;
- // local Tcpbw100 Applet reference
- Tcpbw100 _localTcpAppObj;
-
- /**
- * Constructor
- *
- * @param Socket
- * srvSocketParam Socket used to transmit protocol messages
- *
- * @param iParamTestTime
- * Test time duration to wait for message from server
- */
- OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime) {
- this._srvSocket = srvSocketParam;
- this._iTestTime = iParamTestTime;
- }
-
- /**
- * Constructor accepting Tcpbw100 parameter
- *
- * @param ServerSocket
- * Socket on which to accept connections
- * @param iParamTestTime
- * Test time duration to wait for message from server
- * @param _localParam
- * Applet object used to set the result of the S->C firewall test
- */
- OsfwWorker(ServerSocket srvSocketParam, int iParamTestTime,
- Tcpbw100 _localParam) {
- this._srvSocket = srvSocketParam;
- this._iTestTime = iParamTestTime;
- this._localTcpAppObj = _localParam;
- }
-
- /**
- * Make current thread sleep for 1000 ms
- *
- * */
- public void finalize() {
- // If test is not already complete/terminated, then sleep
- while (!_iFinalized) {
- try {
- Thread.currentThread().sleep(1000);
- } catch (InterruptedException e) {
- // do nothing.
- }
- }
- }
-
- /**
- * run() method of this SFW Worker thread. This thread listens on the socket
- * from the server for a given time period, and checks to see if the server
- * has sent a message that is valid and sufficient to determine if the S->C
- * direction has a fire-wall.
- * */
- public void run() {
-
- Message msg = new Message();
- Socket socketObj = null;
-
- try {
- // set timeout to given value in ms
- _srvSocket.setSoTimeout(_iTestTime * 1000);
- try {
-
- // Blocking call trying to create connection
to socket and
- // accept it
- socketObj = _srvSocket.accept();
- } catch (Exception e) {
- e.printStackTrace();
-
- // The "accept" call has failed, and
indicates a firewall
- // possibility
- this._localTcpAppObj
-
.setS2cSFWTestResults(NDTConstants.SFW_POSSIBLE);
- _srvSocket.close();
- _iFinalized = true;
- return;
- }
- Protocol sfwCtl = new Protocol(socketObj);
-
- // commented out sections indicate move to outer class
- if (sfwCtl.recv_msg(msg) != 0) {
-
- // error, msg read/received incorrectly.
Hence set status as
- // unknown
- System.out
- .println("Simple firewall test:
unrecognized message");
- this._localTcpAppObj
-
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
- // close socket objects and wrap up
- socketObj.close();
- _srvSocket.close();
- _iFinalized = true;
- return;
- }
-
- // The server sends a TEST_MSG type packet. Any other
message-type
- // is not expected at this point, and hence an error
- if (msg.getType() != MessageType.TEST_MSG) {
- this._localTcpAppObj
-
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
- // close socket objects and wrap up
- socketObj.close();
- _srvSocket.close();
- _iFinalized = true;
- return;
- }
-
-
- // The server is expected to send a 20 char message
that
- // says "Simple firewall test" . Every other message
string
- // indicates an unknown firewall status
-
- if (!new String(msg.getBody())
-
.equals(NDTConstants.SFW_PREDEFINED_TEST_MESSAGE)) {
- System.out.println("Simple firewall test: Improper
message");
- this._localTcpAppObj
-
.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
- // close socket objects and wrap up
- socketObj.close();
- _srvSocket.close();
- _iFinalized = true;
- return;
- }
-
- // If none of the above conditions were met, then,
the server
- // message has been received correctly, and there
seems to be no
- // firewall
- this._localTcpAppObj
-
.setS2cSFWTestResults(NDTConstants.SFW_NOFIREWALL);
-
- } catch (IOException ex) {
- // Status of firewall could not be determined before
concluding
-
this._localTcpAppObj.setS2cSFWTestResults(NDTConstants.SFW_UNKNOWN);
- }
-
- // finalize and close connections
- try {
- socketObj.close();
- _srvSocket.close();
- } catch (IOException e) {
- System.err.println("OsfwWorker: Exception trying to close
sockets"
- + e);
- // log exception occurence
- }
- _iFinalized = true;
- }
-}
=======================================
--- /branches/AppletIssue92/Applet/Protocol.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,151 +0,0 @@
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Socket;
-
-/**
- * Class aggregating operations that can be performed for
- * sending/receiving/reading Protocol messages
- *
- * */
-
-public class Protocol {
- private InputStream _ctlInStream;
- private OutputStream _ctlOutStream;
-
- /**
- * Constructor that accepts socket over which to communicate as
parameter
- *
- * @param ctlSocketParam
- * socket used to send the protocol messages over
- * @throws IOException
- * if Input/Output streams cannot be read from/written
into
- * correctly
- */
- public Protocol(Socket ctlSocketParam) throws IOException {
- _ctlInStream = ctlSocketParam.getInputStream();
- _ctlOutStream = ctlSocketParam.getOutputStream();
- }
-
- /**
- * Send message given its Type and data byte
- *
- * @param bParamType
- * Control Message Type
- * @param bParamToSend
- * Data value to send
- * @throws IOException
- * If data cannot be successfully written to the Output
Stream
- *
- * */
- public void send_msg(byte bParamType, byte bParamToSend) throws IOException {
- byte[] tab = new byte[] { bParamToSend };
- send_msg(bParamType, tab);
- }
-
- /**
- * Send protocol messages given their type and data byte array
- *
- * @param bParamType
- * Control Message Type
- * @param bParamToSend
- * Data value array to send
- * @throws IOException
- * If data cannot be successfully written to the Output
Stream
- *
- * */
- public void send_msg(byte bParamType, byte[] bParamToSend)
- throws IOException {
- byte[] header = new byte[3];
- header[0] = bParamType;
-
- // 2 bytes are used to hold data length. Thus, max(data
length) = 65535
- header[1] = (byte) (bParamToSend.length >> 8);
- header[2] = (byte) bParamToSend.length;
-
- // Write data to outputStream
- _ctlOutStream.write(header);
- _ctlOutStream.write(bParamToSend);
- }
-
- /**
- * Populate Message byte array with specific number of bytes of data
from
- * socket input stream
- *
- * @param msgParam
- * Message object to be populated
- * @param iParamAmount
- * specified number of bytes to be read
- * @return integer number of bytes populated
- * @throws IOException
- * If data cannot be successfully read from the Input
Stream
- */
- public int readn(Message msgParam, int iParamAmount) throws
IOException {
- int read = 0;
- int tmp;
- msgParam.initBodySize(iParamAmount);
- while (read != iParamAmount) {
- tmp = _ctlInStream
- .read(msgParam._yaBody, read,
iParamAmount - read);
- if (tmp <= 0) {
- return read;
- }
- read += tmp;
- }
- return read;
- }
-
- /**
- * Receive message at end-point of socket
- *
- * @param msgParam
- * Message object
- * @return integer with values:
- * <p>
- * a) Success:
- * <ul>
- * <li>
- * value=0 : successfully read expected number of bytes.</li>
- * </ul>
- * <p>
- * b) Error:
- * <ul>
- * <li>value= 1 : Error reading ctrl-message length and data
type
- * itself, since NDTP-control packet has to be at the least 3 octets
- * long</li>
- * <li>value= 3 : Error, mismatch between "length" field of
- * ctrl-message and actual data read</li>
- * </ul>
- * */
- public int recv_msg(Message msgParam) throws IOException {
- int length;
- if (readn(msgParam, 3) != 3) {
- return 1;
- }
-
- byte[] yaMsgBody = msgParam.getBody();
- msgParam.setType(yaMsgBody[0]);
-
- // Get data length
- length = ((int) yaMsgBody[1] & 0xFF) << 8;
- length += (int) yaMsgBody[2] & 0xFF;
-
- if (readn(msgParam, length) != length) {
- return 3;
- }
- return 0;
- }
-
- /**
- * Method to close open Streams
- */
- public void close() {
- try {
- _ctlInStream.close();
- _ctlOutStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-} // end class Protocol
=======================================
--- /branches/AppletIssue92/Applet/ResultsTextPane.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,53 +0,0 @@
-import java.awt.Component;
-
-import javax.swing.JTextPane;
-import javax.swing.text.BadLocationException;
-
-/*
- * Class that extends TextPane. This Text-pane is used as the chief
- * Results window that summarizes the results of all tests
- * that have been run.
- *
- * This class is declared separately so that it can be easily extended
- * by users to customize based on individual needs
- *
- */
-public class ResultsTextPane extends JTextPane {
-
- /**
- * Compiler auto-generate value not directly related to class functionality
- */
- private static final long serialVersionUID = -2224271202004876654L;
-
- /**
- * Method to append String into the current document
- *
- * @param paramTextStr
- * String to be inserted into the document
- **/
- public void append(String paramTextStr) {
- try {
-
getStyledDocument().insertString(getStyledDocument().getLength(),
- paramTextStr, null);
- } catch (BadLocationException e) {
- System.out
- .println("WARNING: failed to append text
to the text pane! ["
- + paramTextStr + "]");
- }
- }
-
- /**
- * JTextPane method to insert a component into the document as a replacement
- * for currently selected content. If no selection is made, the the
- * component is inserted at the current position of the caret.
- *
- * @param paramCompObj
- * the component to insert
- * */
- public void insertComponent(Component paramCompObj) {
- setSelectionStart(this.getStyledDocument().getLength());
- setSelectionEnd(this.getStyledDocument().getLength());
- super.insertComponent(paramCompObj);
- }
-
-}
=======================================
--- /branches/AppletIssue92/Applet/StatusPanel.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,121 +0,0 @@
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-
-/**
- * Class that displays status of tests being run. It also provides methods to
- * set status message, record intention to stop tests, and to fetch the status
- * of whether the test is to be stopped.
- * */
-
-public class StatusPanel extends JPanel {
- /**
- * Compiler generated constant that is not related to current classes'
- * specific functionality
- */
- private static final long serialVersionUID = 2609233901130079136L;
-
- private int _iTestsCompleted; // variable used to record the count of
- //
"finished" tests
- private int _iTestsNum; // total test count
- private boolean _bStop = false;
-
- private JLabel _labelTestNum = new JLabel();
- private JButton _buttonStop;
- private JProgressBar _progressBarObj = new JProgressBar();
-
- /*
- * Constructor
- *
- * @param testsNum Total number of tests scheduled to be run
- *
- * @param sParamaEnableMultiple String indicating whether multiple
tests
- * have been scheduled
- */
- public StatusPanel(int iParamTestsNum, String sParamEnableMultiple) {
- this._iTestsCompleted = 1;
- this._iTestsNum = iParamTestsNum;
-
- setTestNoLabelText();
-
- // If multiple tests are enabled to be run, then add
information about
- // the test number being run
- if (sParamEnableMultiple != null) {
- add(_labelTestNum);
- }
-
- _progressBarObj.setMinimum(0);
- _progressBarObj.setMaximum(_iTestsNum);
- _progressBarObj.setValue(0);
- _progressBarObj.setStringPainted(true);
- if (_iTestsNum == 0) {
- _progressBarObj.setString("");
- _progressBarObj.setIndeterminate(true);
- } else {
- _progressBarObj.setString(NDTConstants
- .getMessageString("initialization"));
- }
- add(_progressBarObj);
- _buttonStop = new
JButton(NDTConstants.getMessageString("stop"));
- _buttonStop.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- _bStop = true;
- _buttonStop.setEnabled(false);
- StatusPanel.this.setText(NDTConstants
-
.getMessageString("stopping"));
- }
-
- });
-
- // If multiple tests are enabled to be run, provide user
option to
- // stop the one currently running
- if (sParamEnableMultiple != null) {
- add(_buttonStop);
- }
- }
-
- /**
- * Set Test number being run
- * */
- private void setTestNoLabelText() {
- _labelTestNum.setText(NDTConstants.getMessageString("test") + "
"
- + _iTestsCompleted + " " +
NDTConstants.getMessageString("of")
- + " " + _iTestsNum);
-
- }
-
- /**
- * Get intention to stop tests
- *
- * @return boolean indicating intention to stop or not
- * */
- public boolean wantToStop() {
- return _bStop;
- }
-
- /**
- * End the currently running test
- * */
- public void endTest() {
- _progressBarObj.setValue(_iTestsCompleted);
- _iTestsCompleted++;
- setTestNoLabelText();
- }
-
- /**
- * Sets a string explaining progress of tests
- *
- * @param sParamText
- * String status of test-run
- * */
- public void setText(String sParamText) {
- if (!_progressBarObj.isIndeterminate()) {
- _progressBarObj.setString(sParamText);
- }
- }
-} // end class StatusPanel
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100.java Wed Oct 30 12:37:19 2013 UTC
+++ /dev/null
@@ -1,3919 +0,0 @@
-/*
- Copyright 2003 University of Chicago. All rights reserved.
- The Web100 Network Diagnostic Tool (NDT) is distributed subject to
- the following license conditions:
- SOFTWARE LICENSE AGREEMENT
- Software: Web100 Network Diagnostic Tool (NDT)
-
- 1. The "Software", below, refers to the Web100 Network Diagnostic Tool (NDT)
- (in either source code, or binary form and accompanying documentation). Each
- licensee is addressed as "you" or "Licensee."
-
- 2. The copyright holder shown above hereby grants Licensee a royalty-free
- nonexclusive license, subject to the limitations stated herein and U.S. Government
- license rights.
-
- 3. You may modify and make a copy or copies of the Software for use within your
- organization, if you meet the following conditions:
- a. Copies in source code must include the copyright notice and this Software
- License Agreement.
- b. Copies in binary form must include the copyright notice and this Software
- License Agreement in the documentation and/or other materials provided with the copy.
-
- 4. You may make a copy, or modify a copy or copies of the Software or any
- portion of it, thus forming a work based on the Software, and distribute copies
- outside your organization, if you meet all of the following conditions:
- a. Copies in source code must include the copyright notice and this
- Software License Agreement;
- b. Copies in binary form must include the copyright notice and this
- Software License Agreement in the documentation and/or other materials
- provided with the copy;
- c. Modified copies and works based on the Software must carry prominent
- notices stating that you changed specified portions of the Software.
-
- 5. Portions of the Software resulted from work developed under a U.S. Government
- contract and are subject to the following license: the Government is granted
- for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable
- worldwide license in this computer software to reproduce, prepare derivative
- works, and perform publicly and display publicly.
-
- 6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY
- OF ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES
- DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT,
- (2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,
- COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE
- OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT
- THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT
- ANY ERRORS WILL BE CORRECTED.
-
- 7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE
- UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES:
- BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE
- DAMAGES OF ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS
- OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED
- ON THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR
- OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF
- SUCH LOSS OR DAMAGES.
- The Software was developed at least in part by the University of Chicago,
- as Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).
- */
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Panel;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.StringSelection;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.URL;
-import java.net.UnknownHostException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Date;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.StringTokenizer;
-
-import javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.JApplet;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JSpinner;
-import javax.swing.JTextArea;
-import javax.swing.SpinnerNumberModel;
-
-/*
- * Naming convention used: Hungarian, with the following details
- * _VarName: Instance variables
- * __Varname: Static variables (instead of c_VarName to reduce length)
- * iVarName: Integer variable
- * sVarName: String variable
- * bVarName: boolean variable
- * dVarName: double variable
- * _iaVarName: Integer "Array" variable
- * ...and some other self descriptive examples are..
- * _rscBundleMessages : class scoped ResourceBundle Variable called "Messages"
- * _cmboboxIpV6 : Class scoped combo-box variable to indicate IpV6 choice..
- *
- * Some variables which were called "pub_xxx" are declared to have "accessor" methods for use by
- * other clients. I have left this untouched. These are private variables. Though the type is
- * not evident from the declaration immediately, the "getter/setter" methods for them will immediately
- * indicate their types
- *
- */
-
-/**
- * Main Applet class that creates UI, defines tests and interprets results from
- * the tests.
- *
- * */
-public class Tcpbw100 extends JApplet implements ActionListener {
-
- /**
- * Compiler generated UID that does not follow naming convention, and is not
- * related to functionality itself
- */
- private static final long serialVersionUID = -2030725073538492542L;
-
- JTextArea _txtDiagnosis, _txtStatistics;
- ResultsTextPane _resultsTxtPane;
- // String inresult, outresult; //comment out unused variables
- String _sErrMsg;
- JButton _buttonStartTest;
- // TODO: Could use just one button for dismiss and copy. For later
release
- JButton _buttonDismiss, _buttonStatsDismiss;
- JButton _buttonCopy, _buttonStatsCopy;
- JButton _buttonDetails;
- JButton _buttonStatistics;
- JButton _buttonMailTo;
- JButton _buttonOptions;
- JCheckBox _chkboxDefaultTest, _chkboxPreferIPv6;
- JSpinner _spinnerTestCount = new JSpinner();
- String[] _saDelays = { "immediate", "1min", "5mins", "10mins",
"30mins",
- "2hours", "12hours", "1day" };
- JComboBox _cmboboxDelay;
-
- boolean _bRandomize;
- boolean _bFailed, _bCanCopy;
- // URL location; //unused, hence commenting out
- NewFrame _frameWeb100Vars, _frameDetailedStats, _frameOptions;
- // String s; Unused, commenting out
- double _dTime;
- int _iECNEnabled, _iNagleEnabled, MSSSent, MSSRcvd;
- int _iSACKEnabled, _iTimestampsEnabled, _iWinScaleRcvd,
_iWinScaleSent;
- int _iFastRetran, _iAckPktsOut, _iSmoothedRTT, _iCurrentCwnd,
_iMaxCwnd;
- int _iSndLimTimeRwin, _iSndLimTimeCwnd, _iSndLimTimeSender;
- int _iSndLimTransRwin, _iSndLimTransCwnd, _iSndLimTransSender,
- _iMaxSsthresh;
- int _iSumRTT, _iCountRTT, _iCurrentMSS, _iTimeouts, _iPktsRetrans;
- int _iSACKsRcvd, _iDupAcksIn, _iMaxRwinRcvd, _iMaxRwinSent;
- int _iDataPktsOut, _iRcvbuf, _iSndbuf, _iAckPktsIn, _iDataBytesOut;
- int _iPktsOut, _iCongestionSignals, _iRcvWinScale;
- // int _iPkts, _iLength=8192, _iCurrentRTO;
- int _iPkts, _iLength = NDTConstants.PREDEFINED_BUFFER_SIZE,
_iCurrentRTO;
- int _iC2sData, _iC2sAck, _iS2cData, _iS2cAck;
- // Lowercase string either web100 or web10g used to select Message based upon server type
- String _sServerType = "web100";
- // added for mailto url
- protected URL _targetURL;
-
- String _sEmailText;
- double _dS2cspd, _dC2sspd, _dSc2sspd, _dSs2cspd;
- int _iSsndqueue;
- double _dSbytes;
-
- /**
- * Added by Martin Sandsmark, UNINETT AS Internationalization
- */
- private Locale _localeObj;
- private ResourceBundle _resBundDisplayMsgs;
- private String _sLang = "en";
- private String _sCountry = "US";
- private String _sClient = "applet";
- // private static String lang="nb";
- // private static String country="NO";
- /***/
-
- // these variables are self-explanatory. Do not follow naming
convention,
- // but left that way
- int half_duplex, congestion, bad_cable, mismatch;
- double mylink;
- double loss, estimate, avgrtt, spd, waitsec, timesec, rttsec;
- double order, rwintime, sendtime, cwndtime, rwin, swin, cwin;
- double aspd;
- // end naming convention-not-followed variables
-
- boolean _bIsApplication = false;
- boolean _bTestInProgress = false;
- String sHostName = null;
- InetAddress hostAddress = null;
- String _sTestResults, _sMidBoxTestResult;
- byte _yTests = NDTConstants.TEST_MID | NDTConstants.TEST_C2S
- | NDTConstants.TEST_S2C | NDTConstants.TEST_SFW
- | NDTConstants.TEST_STATUS | NDTConstants.TEST_META;
- int _iC2sSFWResult = NDTConstants.SFW_NOTTESTED;
- int _iS2cSFWResult = NDTConstants.SFW_NOTTESTED;
-
-
/*************************************************************************
- * JavaScript access API extension Added by Seth Peery and Gregory
Wilson,
- * Virginia Tech October 28, 2009 This section adds classwide
variables,
- * written to at runtime, which are then exposed by public accessor methods
- * that can be called from web applications using NDT as a back-end.
- */
-
- // These variables are accessed by the setter/getter methods. While they do
- // not follow naming convention,
- // are left this way
- // pub_c2sspd is assigned the value of _dC2sspd (declared above). the
- // pub_xxx version seems to be used
- // for making public to javascript. No other details known
- private double pub_c2sspd = 0.0;
- private double pub_s2cspd = 0.0;
- private int pub_CurRwinRcvd = 0; // source variable does not exist
- private int pub_MaxRwinRcvd = 0;
- private int pub_MinRTT = 0; // source variable does not exist
- private int pub_MaxRTT = 0; // source variable does not exist
- private double pub_loss = 0.0;
- private double pub_avgrtt = 0.0;
- // TODO:Getter/setter commented out for both below. Why?
- private int pub_MinRTO = 0; // source variable does not exist
- private int pub_MaxRTO = 0; // source variable does not exist
- private int pub_CurRTO = 0;
- // private String pub_CWNDpeaks = ""; // source variable does not
exist
- private int pub_SACKsRcvd = 0;
- private String pub_osVer = "unknown";
- private String pub_javaVer = "unknown";
- private String pub_host = "unknown";
- private String pub_osName = "unknown";
- private String pub_osArch = "unknown";
- private int pub_mismatch = 0;
- private int pub_Bad_cable = 0;
- private int pub_congestion = 0;
- private double pub_cwndtime = 0.0;
- private double pub_pctRcvrLimited = 0.0;
- private String pub_AccessTech = "unknown";
- private String pub_natBox = "unknown";
- private int pub_DupAcksOut = 0;
- private Date pub_TimeStamp;
- private String pub_isReady = new String("no");
- private String pub_clientIP = "unknown";
- private int pub_jitter = 0; // unused. TODO: find out use
- private int pub_Timeouts = 0;
- private String pub_errmsg = "Test not run.";
- private String pub_diagnosis = "Test not run.";
- private String pub_statistics = "Test not run.";
- private String pub_status = "notStarted";
- private double pub_time = 0.0;
- private long pub_bytes = 0;
- private String _sIsAutoRun;
- private String _sUserAgent = null;
-
- /**
- * public static void main for invoking as an Application
- * @param args String array of command line arguments
- * */
- public static void main(String[] args) {
- JFrame frame = new JFrame("ANL/Internet2 NDT (applet)");
- if (args.length < 1 || args.length > 2) {
- System.out.println("Usage: java -jar Tcpbw100.jar <hostname> [client-id]");
- System.exit(0);
- }
- final Tcpbw100 applet = new Tcpbw100();
- frame.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- applet.destroy();
- System.exit(0);
- }
- });
- applet._bIsApplication = true;
- if (args.length > 1) {
- applet._sClient = args[1];
- }
- frame.getContentPane().add(applet);
- frame.setSize(700, 320);
- applet.init();
- applet.setsHostName(args[0]);
- applet.start();
- frame.setVisible(true);
- }
-
- //
- // Accessor methods for public variables
- //
-
- public String get_c2sspd() {
- // Expressed as MiB using base 10
- return Double.toString((pub_c2sspd));
- }
-
- public String get_s2cspd() {
- // Expressed as MiB using base 10
- return Double.toString(pub_s2cspd);
- }
-
- public String get_CurRwinRcvd() {
- return Integer.toString(pub_CurRwinRcvd);
- }
-
- public String get_MaxRwinRcvd() {
- return Integer.toString(pub_MaxRwinRcvd);
- }
-
- public String get_Ping() {
- return Integer.toString(pub_MinRTT);
- }
-
- public String get_MaxRTT() {
- return Integer.toString(pub_MaxRTT);
- }
-
- public String get_loss() {
- return Double.toString(pub_loss);
- }
-
- public String get_avgrtt() {
- return Double.toString(pub_avgrtt);
- }
-
- public String get_CurRTO() {
- return Integer.toString(pub_CurRTO);
- }
-
- public String get_SACKsRcvd() {
- return Integer.toString(pub_SACKsRcvd);
- }
-
- public String get_osVer() {
- return pub_osVer;
- }
-
- public String get_javaVer() {
- return pub_javaVer;
- }
-
- public String get_host() {
- return pub_host;
- }
-
- public String get_osName() {
- return pub_osName;
- }
-
- public String get_osArch() {
- return pub_osArch;
- }
-
- public String get_mismatch() {
- String result;
- if (pub_mismatch == 0) {
- result = "no";
- } else {
- result = "yes";
- }
- return result;
- }
-
- public String get_Bad_cable() {
- String result;
- if (pub_Bad_cable == 1) {
- result = "yes";
- } else {
- result = "no";
- }
- return result;
- }
-
- public String get_congestion() {
- String result;
- if (pub_congestion == 1) {
- result = "yes";
- } else {
- result = "no";
- }
- return result;
- }
-
- public String get_cwndtime() {
- return Double.toString(pub_cwndtime);
- }
-
- public String get_AccessTech() {
- return pub_AccessTech;
- }
-
- public String get_rcvrLimiting() {
- return Double.toString(pub_pctRcvrLimited);
- }
-
- public String get_optimalRcvrBuffer() {
- //buffer size in bits
- return Integer.toString(pub_MaxRwinRcvd *
NDTConstants.KILO_BITS);
- }
-
- public String get_clientIP() {
- return pub_clientIP;
- }
-
- public String get_natStatus() {
- return pub_natBox;
- }
-
- public String get_DupAcksOut() {
- return Integer.toString(pub_DupAcksOut);
- }
-
- public String get_TimeStamp() {
- String result = "unknown";
- if (pub_TimeStamp != null) {
- result = pub_TimeStamp.toString();
- }
- return result;
- }
-
- // commenting out unused method, but not removing in case of future
use
- /*
- * public String isReady() {
- *
- * // if ((pub_isReady == null) || (pub_isReady.equals(""))) { //
- * pub_isReady = "no"; // } // String result = "foo";
- *
- * //if (failed) { // pub_isReady = "failed1"; //} //result =
pub_isReady;
- * // return result; return pub_isReady; }
- */
-
- public String get_jitter() {
- return Integer.toString((pub_MaxRTT - pub_MinRTT));
- }
-
- public String get_WaitSec() {
- return Integer.toString((pub_CurRTO * pub_Timeouts) / 1000);
- }
-
- public String get_errmsg() {
- return pub_errmsg;
- }
-
- public String get_diagnosis() {
- return pub_diagnosis;
- }
-
- public String get_statistics() {
- return pub_statistics;
- }
-
- public String get_status() {
- return pub_status;
- }
-
- public String get_instSpeed() {
- //Get speed in bits, hence multiply by 8 for byte->bit
conversion
- return Double.toString((NDTConstants.EIGHT * pub_bytes)
- / (System.currentTimeMillis() - pub_time));
- }
-
- /**
- * Set UserAgent String containing browser details.
- *
- * @return String UserAgent details set locally
- * @see UserAgentTools
- * */
- public String getUserAgent() {
- return _sUserAgent;
- }
-
- /**
- * Set UserAgent String.
- *
- * @param paramStrUserAgent
- * UserAgent String to be set locally
- * @see UserAgentTools
- * */
- public void setUserAgent(String paramStrUserAgent) {
- this._sUserAgent = paramStrUserAgent;
- }
-
- /**
- * Get Client->Server fire-wall test results.
- *
- * @return integer indicating C->S test results
- * */
- public int getC2sSFWTestResults() {
- return this._iC2sSFWResult;
- }
-
- /**
- * Set Client->Server fire-wall test results.
- *
- * @param iParamC2SRes
- * integer indicating C->S test results
- * */
- public void setC2sSFWTestResults(int iParamC2SRes) {
- this._iC2sSFWResult = iParamC2SRes;
- }
-
- /**
- * Get Server->Client fire-wall test results.
- *
- * @return integer indicating C->S test results
- * */
- public int getS2cSFWTestResults() {
- return this._iS2cSFWResult;
- }
-
- /**
- * Set server->Client fire-wall test results.
- *
- * @param iParamS2CRes
- * integer indicating C->S test results
- * */
- public void setS2cSFWTestResults(int iParamS2CRes) {
- this._iS2cSFWResult = iParamS2CRes;
- }
-
- //
- // End of accessor methods
- //
-
- /**
- * Class to start tests in a thread. Starts by disabling all buttons,
and
- * invokes the dottcp() method. This thread is stopped when the
number of
- * tests that was configured to be run have all completed, or if the
user
- * stops it by interrupting from the GUI. Once the tests have been run, the
- * buttons are enabled so that results can be viewed in detail.
- * */
- class TestWorker implements Runnable {
- public void run() {
- if (!_bTestInProgress) {
- int testNo = 1;
- int testsNum = ((Integer)
_spinnerTestCount.getValue())
- .intValue();
- _bTestInProgress = true;
- _buttonStartTest.setEnabled(false);
- _buttonDetails.setEnabled(false);
- _buttonStatistics.setEnabled(false);
- _buttonMailTo.setEnabled(false);
- _buttonOptions.setEnabled(false);
- _spinnerTestCount.setEnabled(false);
-
- // StatusPanel sPanel = new
StatusPanel(testsNum);
- // re-arch. Replaced above by the line below
- String sTempEnable =
getParameter("enableMultipleTests");
-
- // create status panel based on whether
multiple tests are
- // enabled
- // If not, then the progress bar displays
just the specific test
- // (middlebox, C2S, firewall etc)
- // If yes, then the progress bar also shows
the progress on the
- // number of tests
-
- StatusPanel sPanel = new
StatusPanel(testsNum, sTempEnable);
- getContentPane().add(BorderLayout.NORTH,
sPanel);
- getContentPane().validate();
- getContentPane().repaint();
-
- try {
- while (true) {
- if (sPanel.wantToStop()) {
- break;
- }
- if (testsNum == 0) {
-
_resultsTxtPane.append("\n** "
- +
_resBundDisplayMsgs
-
.getString("startingTest") + " "
- + testNo +
" **\n");
- } else {
-
_resultsTxtPane.append("\n** "
- +
_resBundDisplayMsgs
-
.getString("startingTest") + " "
- + testNo +
" "
- +
_resBundDisplayMsgs.getString("of") + " "
- + testsNum +
" **\n");
- }
- dottcp(sPanel);
- // If test count scheduled is
complete, quit
- if (testNo == testsNum) {
- break;
- }
- // If user stops the test,
quit
- if (sPanel.wantToStop()) {
- break;
- }
- sPanel.setText("");
- sPanel.endTest();
- // increment test count
- testNo += 1;
-
- // This iteration of tests is
now complete. Enable all
- // buttons and output
- // so that user can view
details of results
-
_buttonDetails.setEnabled(true);
-
_buttonStatistics.setEnabled(true);
-
_buttonMailTo.setEnabled(true);
-
_buttonOptions.setEnabled(true);
- _txtStatistics.append("\n** "
- +
_resBundDisplayMsgs.getString("test") + " "
- + testNo + "
**\n");
- _txtDiagnosis.append("\n** "
- +
_resBundDisplayMsgs.getString("test") + " "
- + testNo + "
**\n");
-
- // Now, sleep for some time
based on user's choice
- // before running the next
- // iteration of the test suite
- try {
- switch
(_cmboboxDelay.getSelectedIndex()) {
- case 1:
-
_resultsTxtPane
-
.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep1m")
-
+ " **\n");
-
Thread.sleep(1000 * 60);
- break;
- case 2:
-
_resultsTxtPane
-
.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep5m")
-
+ " **\n");
-
Thread.sleep(1000 * 60 * 5);
- break;
- case 3:
-
_resultsTxtPane.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep10m")
- +
" **\n");
-
Thread.sleep(1000 * 60 * 10);
- break;
- case 4:
-
_resultsTxtPane.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep30m")
- +
" **\n");
-
Thread.sleep(1000 * 60 * 30);
- break;
- case 5:
-
_resultsTxtPane
-
.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep2h")
-
+ " **\n");
-
Thread.sleep(1000 * 60 * 120);
- break;
- case 6:
-
_resultsTxtPane.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep12h")
- +
" **\n");
-
Thread.sleep(1000 * 60 * 720);
- break;
- case 7:
-
_resultsTxtPane
-
.append("\n** "
-
+ _resBundDisplayMsgs
-
.getString("sleep1d")
-
+ " **\n");
-
Thread.sleep(1000 * 60 * 1440);
- break;
- }
- } catch (InterruptedException
e) {
- // do nothing.
- System.err.println("INFO: Thread interrupted while sleeping before starting the next test.");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
-
- String sMessage =
NDTUtils.isEmpty(e.getMessage())
- ?
_resBundDisplayMsgs.getString("withoutMessage")
- : e.getMessage();
-
- _bFailed = true;
- _sErrMsg =
_resBundDisplayMsgs.getString("unexpectedException")
- + " (" + e.getClass().getName()
+ "): "
- + sMessage + "\n";
- }
-
- // If test failed due to any reason, mark
failure reason too
- if (_bFailed) {
- _resultsTxtPane.append(_sErrMsg);
-
- pub_isReady = "failed";
- pub_errmsg = _sErrMsg;
- }
-
- // Enable all buttons. Continue activities to
mark status as
- // complete
- _buttonDetails.setEnabled(true);
- _buttonStatistics.setEnabled(true);
- _buttonMailTo.setEnabled(true);
- _buttonOptions.setEnabled(true);
- _spinnerTestCount.setEnabled(true);
-
showStatus(_resBundDisplayMsgs.getString("done2"));
- _resultsTxtPane.append("\n"
- +
_resBundDisplayMsgs.getString("clickStart2") + "\n");
- _buttonStartTest.setEnabled(true);
- _bTestInProgress = false;
- getContentPane().remove(sPanel);
- getContentPane().validate();
- getContentPane().repaint();
- }
- }
- } // end inner class
-
- /**
- * "Remote Control" function - invoke NDT' runtest() method from the
API
- */
- public void run_test() {
- // The Java security model considers calling a method that
opens a
- // socket
- // from JavaScript to be a privileged action. By using
- // java.security.privilegedAction here, we can grant
JavaScript the
- // same expanded privileges as the signed applet to open a
socket.
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- pub_errmsg = "Test in progress.";
- runtest();
- return null;
- }
- });
- }
-
- /**
- * Initialize the base NDT window Applet init() method
- */
- public void init() {
- if (getParameter("country") != null) {
- _sCountry = getParameter("country");
- }
- if (getParameter("language") != null) {
- _sLang = getParameter("language");
- }
- if (getParameter("client") != null) {
- _sClient = getParameter("client");
- }
-
- try {
- _localeObj = new Locale(_sLang, _sCountry);
- _resBundDisplayMsgs =
ResourceBundle.getBundle("Tcpbw100_msgs",
- _localeObj);
-
- // Replaced method call to initialize
_resBundDisplayMsgs for access
- // by class
- // NDTConstants.initConstants(locale);
- NDTConstants.initConstants(_sLang, _sCountry);
-
- } catch (Exception e) {
- JOptionPane.showMessageDialog(null,
- "Error while loading language
files:\n" + e.getMessage());
- e.printStackTrace();
- }
-
- // create main window
- try {
- javax.swing.SwingUtilities.invokeAndWait(new
Runnable() {
- public void run() {
- createMainWindow();
- }
- });
- } catch (Exception e) {
- System.err.println("createGUI didn't successfully
complete");
- }
-
- // Autorun functionality
- _sIsAutoRun = getParameter("autoRun");
- if ((_sIsAutoRun != null) && _sIsAutoRun.equals("true")) {
- pub_errmsg = "Test in progress.";
- runtest();
- }
-
- }
-
- /**
- * Initialize the "main" window. The main window is composed of 1. The
- * results pane, which describes the process and displays their
results 2.
- * The buttons pane, which houses all the buttons for various options
- *
- * */
- private void createMainWindow() {
- // set content manager
- getContentPane().setLayout(new BorderLayout());
-
- // start with status set to "Ready" to perform tests
- showStatus(_resBundDisplayMsgs.getString("ready"));
-
- // initialize
- _bFailed = false;
- _bRandomize = false; // Seems unused after this. Retaining
either way
- _bCanCopy = false;
-
- // Results panel
- _resultsTxtPane = new ResultsTextPane();
- _resultsTxtPane.append(NDTConstants.NDT_TITLE_STR
- + NDTConstants.VERSION + "\n");
- _resultsTxtPane.setEditable(false);
- getContentPane().add(new JScrollPane(_resultsTxtPane));
-
_resultsTxtPane.append(_resBundDisplayMsgs.getString("clickStart")
- + "\n");
-
- // Panel too add all buttons
- Panel buttonsPanel = new Panel();
-
- // Add "start" button
- _buttonStartTest = new
JButton(_resBundDisplayMsgs.getString("start"));
- _buttonStartTest.addActionListener(this);
- buttonsPanel.add(_buttonStartTest);
-
- // Add "statistics" button
- _buttonStatistics = new JButton(
- _resBundDisplayMsgs.getString("statistics"));
- _buttonStatistics.addActionListener(this);
- if (getParameter("disableStatistics") == null) {
- buttonsPanel.add(_buttonStatistics);
- }
- _buttonStatistics.setEnabled(false);
-
- // Add "Details" button
- _buttonDetails = new JButton(
- _resBundDisplayMsgs.getString("moreDetails"));
- _buttonDetails.addActionListener(this);
- if (getParameter("disableDetails") == null) {
- buttonsPanel.add(_buttonDetails);
- }
- _buttonDetails.setEnabled(false);
-
- // Add "Report problem" button
- _buttonMailTo = new JButton(
-
_resBundDisplayMsgs.getString("reportProblem"));
- _buttonMailTo.addActionListener(this);
- if (getParameter("disableMailto") == null) {
- buttonsPanel.add(_buttonMailTo);
- }
- _buttonMailTo.setEnabled(false);
-
- // Add "Options" button
- _buttonOptions = new
JButton(_resBundDisplayMsgs.getString("options")
- + "...");
- _buttonOptions.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- _buttonOptions.setEnabled(false);
- // call the Options-window create code
- createOptionsWindow();
- _buttonOptions.setEnabled(true);
- }
- });
- // If disableOptions is not set, then add button
- if (getParameter("disableOptions") == null) {
- buttonsPanel.add(_buttonOptions);
- }
-
- // add buttons panel to the main window
- getContentPane().add(BorderLayout.SOUTH, buttonsPanel);
-
- // "Options" panel components
- // 1. Is IPv6 preferred?
- _chkboxPreferIPv6 = new JCheckBox(
- _resBundDisplayMsgs.getString("preferIPv6"));
- _chkboxPreferIPv6.setSelected(true);
- _chkboxPreferIPv6.addActionListener(this);
- // 2. Conduct default tests?
- _chkboxDefaultTest = new JCheckBox(
-
_resBundDisplayMsgs.getString("defaultTests"));
- _chkboxDefaultTest.setSelected(true);
- // 3. configure number of tests
- SpinnerNumberModel model = new SpinnerNumberModel();
- model.setMinimum(new Integer(0));
- model.setValue(new Integer(1));
- _spinnerTestCount.setModel(model);
- _spinnerTestCount.setPreferredSize(new Dimension(60, 20));
- _cmboboxDelay = new JComboBox();
- for (int i = 0; i < _saDelays.length; i++) {
-
_cmboboxDelay.addItem(_resBundDisplayMsgs.getString(_saDelays[i]));
- }
- _cmboboxDelay.setSelectedIndex(0);
-
- } // createDiagnoseWindow() ends
-
- /**
- * Create the "More details" window.
- */
- public void createDiagnoseWindow() {
- if (_sServerType.compareTo("web100") == 0)
-
showStatus(_resBundDisplayMsgs.getString("getWeb100Var"));
- else
-
showStatus(_resBundDisplayMsgs.getString("getWeb10gVar"));
-
- // create new frame
- if (_frameWeb100Vars == null) {
- _frameWeb100Vars = new NewFrame(this);
- }
-
- // Get title for this window
- _frameWeb100Vars.setTitle(_resBundDisplayMsgs.getString(_sServerType + "Var"));
- Panel buttons = new Panel();
- _frameWeb100Vars.getContentPane().add("South", buttons);
-
- // Add "close" button
- _buttonDismiss = new
JButton(_resBundDisplayMsgs.getString("close"));
- _buttonDismiss.addActionListener(this);
-
- // Add "copy" button
- _buttonCopy = new
JButton(_resBundDisplayMsgs.getString("copy"));
- _buttonCopy.addActionListener(this);
-
- // Create Text area for displaying results, add "Heading"
- _txtDiagnosis = new JTextArea(
- _resBundDisplayMsgs.getString(_sServerType +
"KernelVar") + ":\n", 15,
- 30);
- _txtDiagnosis.setEditable(true);
- _buttonDismiss.setEnabled(true);
- _buttonCopy.setEnabled(_bCanCopy);
-
- // Now place all the buttons
- buttons.add("West", _buttonDismiss);
- buttons.add("East", _buttonCopy);
- _frameWeb100Vars.getContentPane().add(new
JScrollPane(_txtDiagnosis));
- _frameWeb100Vars.pack();
- } // createDiagnoseWindow() ends
-
- /**
- * Create the "Statistics" window.
- */
- public void createStatsWindow() {
-
showStatus(_resBundDisplayMsgs.getString("printDetailedStats"));
-
- // create new frame
- if (_frameDetailedStats == null) {
- _frameDetailedStats = new NewFrame(this);
- }
- _frameDetailedStats.setTitle(_resBundDisplayMsgs
- .getString("detailedStats"));
-
- // create panel for buttons
- Panel buttons = new Panel();
- _frameDetailedStats.getContentPane().add("South", buttons);
-
- // Button for "close"
- _buttonStatsDismiss = new JButton(
- _resBundDisplayMsgs.getString("close"));
- _buttonStatsDismiss.addActionListener(this);
-
- // Button for "copy"
- _buttonStatsCopy = new
JButton(_resBundDisplayMsgs.getString("copy"));
- _buttonStatsCopy.addActionListener(this);
-
- // Text area for Statistics, add "heading"
- _txtStatistics = new JTextArea(
- _resBundDisplayMsgs.getString(_sServerType + "Stats") +
":\n", 25, 70);
- _txtStatistics.setEditable(false);
- _buttonStatsDismiss.setEnabled(true);
- _buttonStatsCopy.setEnabled(_bCanCopy);
-
- // Place all components
- buttons.add("West", _buttonStatsDismiss);
- buttons.add("East", _buttonStatsCopy);
- _frameDetailedStats.getContentPane().add(
- new JScrollPane(_txtStatistics));
- _frameDetailedStats.pack();
- } // createStatsWindow()
-
- /**
- * Create the "Options" window. The options displayed to the user are:
- * <ul>
- * <li>Would you like to Perform default tests?</li>
- * <li>Would you prefer IPV6?</li>
- * <li>Select number of times the test-suite is to be run</li>
- * </ul>
- */
- public void createOptionsWindow() {
- showStatus(_resBundDisplayMsgs.getString("showOptions"));
-
- if (_frameOptions == null) {
- _frameOptions = new NewFrame(this);
-
_frameOptions.setTitle(_resBundDisplayMsgs.getString("options"));
-
***The diff for this file has been truncated for email.***
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_ca_ES.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,232 +0,0 @@
-10gbps = subxarxa 10 Gbps 10 Gigabit Ethernet/OC-192
-10mbps = subxarxa 10 Mbps Ethernet
-10mins = 10 min
-12hours = 12 hores
-1day = 1 dia
-1gbps = subxarxa 1.0 Gbps Gigabit Ethernet
-1min = 1 min
-2.4gbps = subxarxa 2.4 Gbps OC-48
-2hours = 2 hores
-30mins = 30 min
-45mbps = subxarxa 45 Mbps T3/DS3
-5mins = 5 min
-622mbps = subxarxa a 622 Mbps OC-12
-and = and
-architecture = Arquitectura
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Cua de paquets detectada
-c2sThroughput = C2S throughput
-c2sThroughputFailed = Test de C2S throughput FALLIT!
-cabledsl = Cable/DSL modem
-cablesNok = Advert\u00e8ncia: Excessius errors de xarxa, revisar cable(s) de xarxa
-cablesOk = Trobat bon(s) cable(s) de xarxa
-checkingFirewalls = Buscant Firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Buscant Caixes Intermitjes (Middleboxes) . . . . . . . . . . . . . . . . . .
-clickStart = Fes click a COMEN\u00e7AR per a comen\u00e7ar la prova
-clickStart2 = Fes click a COMEN\u00e7AR per a tornar a fer la prova
-client = Client
-client2 = Client
-clientAcksReport = Client Confirma l'enlla\u00e7 reportat \u00e9s
-clientDataReports = Dades de Client reporten que l'enlla\u00e7 \u00e9s
-clientInfo = Detalls del sistema client
-clientIpModified = Informaci\u00f3: El NAT (Network Address Translation) est\u00e0 modificant l'adre\u00e7a IP del client
-clientIpNotFound = No es troba l'adre\u00e7a del client. Per a usuaris d'Internet Explorer, modifiqui els par\u00e0metres de Java\n Click a Eines - Opcions d'Internet - Seguretat - Nivell personalitzat, trobi la l\u00ednia\n Microsoft VM - Java Permissions i faci click a personalitzar\ Editar permisos - Acc\u00e9s a totes les Adreces de xarxa, click a Habilitar i desar els canvis.
-clientIpPreserved = Les Adreces IP de servidor son conservades Extrem-a-Extrem
-clientSays = per\u00f2 el Client diu
-close = Tancar
-comments = Comentaris
-congestNo = No s'ha trobat congesti\u00f3 de xarxa
-congestYes = Informaci\u00f3: El throughput \u00e9s limitat per altre tr\u00e0fic de xarxa
-connIdle = La connexi\u00f3 estaba aturada
-connStalled = La connexi\u00f3 s'ha pausat
-connected = Connectat a:
-connectedTo = s'ha connectat a:
-copy = C\u00f2pia
-defaultTests = Proves per defecte
-delayBetweenTests = Retard entre proves
-detailedStats = Estad\u00edstiques detallades
-dialup = Modem telef\u00f2nic
-dialup2 = Trucada
-done = Fet.
-done2 = Tcpbw100 fet
-dupAcksIn = es reben ack's duplicats
-duplexFullHalf = Alarma: Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
-duplexHalfFull = Alarma: Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-duplexNok = Advert\u00e8ncia: Condici\u00f3 doble antiga no concordant antiga
-duplexOk = Operaci\u00f3 normal trobada (Normal duplex operation found.)
-endOfEmail = Final del missatge de Correu electr\u00f2nic
-excLoss = Exc\u00e9s de p\u00e8rdua de paquets est\u00e0 impactant al rendiment, prova la funci\u00f3 d'autonegociaci\u00f3 entre el teu PC i el switch de xarxa
-excessiveErrors = Alarma: Excessius errors, revisa el(s) cable(s) de xarxa.
-firewallNo = no est\u00e0 darrere un firewall. [Conexi\u00f3 al port ef\u00edmer correcte]
-firewallYes = est\u00e0 probablement darrere un firewall. [Conexi\u00f3 al port ef\u00edmer ha fallat]
-flowControlLimits = El control de fluxe basat en xarxa limita el throughput a
-found100mbps = Trobat enlla\u00e7 de 100 Mbps FastEthernet.
-found10gbps = Trobat enlla\u00e7 de 10 Gbps 10 GigEthernet/OC-192.
-found10mbps = Trobat enlla\u00e7 de 10 Mbps Ethernet.
-found1gbps = Trobat enlla\u00e7 de 1 Gbps GigabitEthernet.
-found2.4gbps = Trobat enlla\u00e7 de 2.4 Gbps OC-48.
-found45mbps = Trobat enlla\u00e7 de 45 Mbps T3/DS3.
-found622mbps = Trobat enlla\u00e7 de 622 Mbps OC-12.
-foundDialup = Trobat enlla\u00e7 de Dial-up modem.
-foundDsl = Trobat enlla\u00e7 de Cable modem/DSL/T1.
-fullDuplex = subxaxarxa Full duplex Fast Ethernet
-general = General
-generatingReport = Generant informe de problemes: Aquest informe s'enviar\u00e0 per e-mail a la persona que especifiquis
-getWeb100Var = Obt\u00e9 les variables Web100
-getWeb10gVar = Obt\u00e9 les variables Web10G
-halfDuplex = subxarxa Half duplex Fast Ethernet
-id = Eina de diagn\u00f2stic de xara TCP/Web100/Web10G
-immediate = immediat
-inboundTest = Test d'entrada Tcpbw100...
-inboundWrongMessage = Test de throughput C2S: Rebut un tipus de missatge erroni
-incompatibleVersion = N\u00famero de versi\u00f3 incompatible
-incrRxBuf = Augmentant el valor del buffer de recepci\u00f3 del client
-incrTxBuf = Augmentant el buffer de sortida del servidor NDT
-information = Informaci\u00f3
-initialization = Inicialitzant...
-insufficient = No es disposa de prou dades per a determinar el tipus d'enlla\u00e7.
-invokingMailtoFunction = Invocant funci\u00f3 Mailto Tcpbw100
-ipProtocol = Protocol IP
-ipcFail = Fallen les comunicacions entre processos, tipus d'enlla\u00e7 desconegut.
-usingIpv4 = -- Utilitzant adre\u00e7a IPv4
-usingIpv6 = -- Utilitzant adre\u00e7a IPv6
-javaData = Dades Java
-kbyteBufferLimits = KByte buffer que limita el throughput a
-limitNet = Xarxa limitada
-limitRx = Receptor limitat
-limitTx = Emissor limitat
-linkFullDpx = Enlla\u00e7 establert al mode Full Duplex
-linkHalfDpx = Enlla\u00e7 establert al mode Half Duplex
-loggingWrongMessage = Logant al servidor: Es rep un tipus de missatge erroni.
-lookupError = Incapa\u00e7 d'obtenir la adre\u00e7a IP remota
-mboxWrongMessage = Test intermig: Rebut tipus de missatge erroni
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = El servidor ha fallat mentre es provaba la middlebox
-middleboxFail2 = test Middlebox FALLA!
-middleboxModifyingMss = Informaci\u00f3: La middlebox de xarxa est\u00e0 modificant la variable MSS
-middleboxTest = Test de Middlebox Tcpbw100...
-moreDetails = M\u00e9s detalls...
-name = Nom
-ndtServerHas = El servidor NDT t\u00e9 un
-noPktLoss1 = No hi ha p\u00e8rdua de paquets
-noPktLoss2 = No s'aprecia cap p\u00e8rdua de paquets
-numberOfTests = Nombre de proves
-of = de
-off = OFF
-ok = OK
-oldDuplexMismatch = "Advert\u00e8ncia: Es detecta antiga condici\u00f3 doble no concordant"
-on = ON
-ooOrder = per\u00f2 els paquets han arribat desordenats
-options = Opcions
-osData = dades del SO:
-otherClient = S'est\u00e0 servint un altre client, la seva prova comen\u00e7ar\u00e0 en
-otherTraffic = Informaci\u00f3: L'enlla\u00e7 de xarxa est\u00e0 congestionat per algun altre tr\u00e0fic
-outboundTest = Test de sortida Tcpbw100...
-outboundWrongMessage = Test de throughput C2S: Es rep un tipus de missatge erroni
-packetQueuing = Posant paquets en cua
-packetQueuingInfo = TCP (Transmission Control Protocol) transfereix dades entre dos\n equips d'internet. Autom\u00e0ticament detecta i es recupera d'errors i p\u00e8rdues./n TCP utilitza buffers per a proporcionar aquesta confiabilitat. Adem\u00e9s,\n els switch i routers
-utilitzen buffers per aquells casos en que m\u00faltiples enlla\u00e7os d'entrada\n envien paquets a un \u00fanic enlla\u00e7 de sortida o si varien les velocitats de cada enlla\u00e7\n (FastEthernet a modem DSL).\n\n El servidor NDT genera i envia 10 segons de dades al client. En\n alguns casos el servidor pot generar les dades m\u00e9s de pressa del que pot enviar els paquets a la xarxa\n (p.ex., una CPU a 2 GHz enviant a un client conectat a una DSL).\n Quan passa aix\u00f2, alguns paquets es poden quedar a la cua de sortida /n quan s'acaba el temporitzador de 10 segons.\n El TCP continuar\u00e0 enviant automaticament aquests missatges a la cua i el client continuar\u00e0 acceptant-los i processant-los.\n Aix\u00f2 provoca que una prova duri m\u00e9s del que s'espera.\n\n Aquesta condici\u00f3 s'ha produït durant aquesta prova. /n No es requereix cap acci\u00f3 per a resoldre aquesta situaci\u00f3.
-packetSizePreserved = La mida del paquet \u00e9s prefixada Extrem-a-Extrem
-packetsize = la mida de paquet
-pc = PC
-pctOfTime = % del temps
-performedTests = Proves realitzades
-pktsRetrans = Paquets retransmesos
-possibleDuplexFullHalf = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
-possibleDuplexHalfFull = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-possibleDuplexHalfFullWarning = Advert\u00e8ncia: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-preferIPv6 = prefereix IPv6
-printDetailedStats = Imprimir Estad\u00edstiques detallades
-protocolError = Error de Protocol! S'esperava 'prepare', s'obt\u00e9: 0x
-qSeen = Test de throughput: Detectat encuament de paquets
-ready = Tcpbw100 llest
-receiveBufferShouldBe = Informaci\u00f3: El buffer de recepci\u00f3 hauria de ser
-receiving = Rebent resultats...
-reportProblem = Informar el problema
-resultsParseError = Error en transformar els resultats del test!
-resultsTimeout = Alerta! Time-out al client mentre es llegien dades, (possible duplex mismatch exists)
-resultsWrongMessage = Resultats del test: S'ha rebut un tipus de missatge incorrecte
-rtt = RTT
-rttFail = L'algorisme del link de detecci\u00f3 ha fallat degut a excessius temps d'anada i tornada (Round trip times).
-runningInboundTest = executant test d'entrada de 10s (server-a-client [S2C]) . . . . . .
-runningOutboundTest = executant test de sortida de 10s (client-a-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Encuament de paquets detectat
-s2cThroughput = Throughput S2C
-s2cThroughputFailed = El test de throughput S2C ha FALLAT!
-sackReceived = Blocs SACK rebuts
-scalingFactors = Factors d'Escala
-seconds = segons
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Servidor
-serverAcksReport = El servidor confirma que l'enlla\u00e7 reportat \u00e9s
-serverFault = Fallida de Servidor: Error desconegut. Torneu-ho a provar m\u00e9s tard, si us plau.
-serverBusy = Servidor Ocupat: Massa clients esperant a la cua del servidor. Torneu-ho a provar m\u00e9s tard, si us plau.
-serverBusy15s = Servidor Ocupat: Esperi 15 segons per a la finalitzaci\u00f3 del test anterior.
-serverBusy30s = Servidor Ocupat: Esperi 30 segons per a la finalitzaci\u00f3 del test anterior.
-serverBusy60s = Servidor Ocupat: Esperi 60 segons per a la finalitzaci\u00f3 del test anterior.
-serverDataReports = Les dades del servidor indiquen que l'enlla\u00e7 \u00e9s
-serverFail = El servidor ha fallat mentre es rebien dades
-serverIpModified = Informaci\u00f3: El Network Address Translation (NAT) est\u00e0 modificant l'adre\u00e7a IP del client
-serverIpPreserved = L'adre\u00e7a IP del servidor es mant\u00e9 Extrem-a-Extrem
-serverNotRunning = Proc\u00e9s del servidor no funcionant: Arrenqui el proc\u00e9s web100srv al servidor remot.
-serverSays = El servidor diu
-sfwFail = Test de firewall simple FALLA!
-sfwSocketFail = Simple firewall test: Cannot create listen socket
-sfwTest = Simple firewall test...
-sfwWrongMessage = Test de firewall simple: S'ha rebut un missatge erroni.
-showOptions = Mostra les opcions
-simpleFirewall = Firewall simple
-sleep10m = Dormint per 10 mins...
-sleep1m = Dormint per 1 min...
-sleep30m = Dormint per 30 mins...
-sleep5m = Dormint per 5 mins...
-sleep12h = Dormint per 12 hores...
-sleep1d = Dormint per 1 d\u00eda...
-sleep2h = Dormint per 2 hores...
-start = COMEN\u00e7A
-startingTest = Comen\u00e7ant test
-statistics = Estad\u00edstiques
-stop = ATURA
-stopped = Les proves han estat aturades!
-stopping = Aturant...
-systemFault = Fallada de sistema
-test = Prova
-testsuiteWrongMessage = Negociant s\u00e8rie de proves: S'ha rebut un missatge erroni.
-theSlowestLink = El link m\u00e9s lent al cam\u00ed extrem a extrem \u00e9s un
-theoreticalLimit = El l\u00edmit te\u00f2ric de xarxa \u00e9s
-thisConnIs = Aquesta connexi\u00f3 \u00e9s
-timesPktLoss = temps degut a p\u00e8rdua de paquets
-toMaximizeThroughput = kbytes per a maximitzar el cabdal (throughput)
-troubleReportFrom = Informe de problemes de NDT a
-unableToDetectBottleneck = El servidor no pot determinar el tipus d'enlla\u00e7 que provoca el coll d'ampolla.
-unableToObtainIP = No es possible determinar la adre\u00e7a IP local
-unknownID = ID de test desconegut
-unknownServer = Servidor desconegut
-unsupportedClient = Informaci\u00f3: El servidor no suporta aquest client de l\u00ednia de comandes
-vendor = Fabricant
-version = Versi\u00f3
-versionWrongMessage = Negociant la versi\u00f3 de NDT: S'ha rebut un missatge erroni.
-web100Details = An\u00e0lisi detallat Web100
-web100KernelVar = Variables de Kernel Web100
-web100Stats = Estad\u00edstiques Web100 habilitades
-web100Var = Variables Web100
-web100rtt = Web100 informa el temps d'anada i tornada (RTT)
-web100tcpOpts = Web100 informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
-web10gDetails = An\u00e0lisi detallat Web10G
-web10gKernelVar = Variables de Kernel Web10G
-web10gStats = Estad\u00edstiques Web10G habilitades
-web10gVar = Variables Web10G
-web10grtt = Web10G informa el temps d'anada i tornada (RTT)
-web10gtcpOpts = Web10G informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
-willImprove = Millorar\u00e0 el funcionament
-workstation = Estaci\u00f3 de treball
-your = El seu
-yourPcHas = El seu PC/Equip de treball t\u00e9 un
-connectingTo = Connectant a
-toRunTest = executar prova
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_el_GR.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,231 +0,0 @@
-10gbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 10 Gbps 10 Gigabit Ethernet/OC-192
-10mbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 10 Mbps Ethernet
-10mins = 10 \u03bb\u03b5\u03c0\u03c4\u03ac
-12hours = 12 \u03ce\u03c1\u03b5\u03c2
-1day = 1 \u03bc\u03ad\u03c1\u03b1
-1gbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 1.0 Gbps Gigabit Ethernet
-1min = 1 \u03bb\u03b5\u03c0\u03c4\u03cc
-2.4gbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 2.4 Gbps OC-48
-2hours = 2 \u03ce\u03c1\u03b5\u03c2
-30mins = 30 \u03bb\u03b5\u03c0\u03c4\u03ac
-45mbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 45 Mbps T3/DS3
-5mins = 5 \u03bb\u03b5\u03c0\u03c4\u03ac
-622mbps = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c4\u03cd\u03c0\u03bf\u03c5 622 Mbps OC-12
-and = \u03ba\u03b1\u03b9
-architecture = \u0391\u03c1\u03c7\u03b9\u03c4\u03b5\u03ba\u03c4\u03bf\u03bd\u03b9\u03ba\u03ae
-bytes = Bytes
-c2s = \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2-\u03c0\u03c1\u03bf\u03c2-\u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae
-c2sPacketQueuingDetected = [C2S]: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03bc\u03c0\u03b1\u03af\u03bd\u03bf\u03c5\u03bd \u03c3\u03b5 \u03bf\u03c5\u03c1\u03ac
-c2sThroughput = \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae
-c2sThroughputFailed = \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7 \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u0391\u03a0\u0395\u03a4\u03a5\u03a7\u0395!
-cabledsl = Cable/DSL modem
-cablesNok = \u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u03c5\u03c0\u03b5\u03c1\u03b2\u03bf\u03bb\u03b9\u03ba\u03ac \u03c0\u03bf\u03bb\u03bb\u03ac \u03bb\u03ac\u03b8\u03b7 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5, \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf(\u03b1) \u03c4\u03bf\u03c5 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5
-cablesOk = \u039a\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf(\u03b1) \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5 \u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9
-checkingFirewalls = \u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03b3\u03b9\u03b1 firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = \u0388\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c5\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c5\u03c2 . . . . . . . . . . . . . . . . . .
-clickStart = \u03a0\u03b9\u03ad\u03c3\u03c4\u03b5 \u0395\u039d\u0391\u03a1\u039e\u0397 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7
-clickStart2 = \u03a0\u03b9\u03ad\u03c3\u03c4\u03b5 \u0395\u039d\u0391\u03a1\u039e\u0397 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b1\u03bd\u03b1\u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7
-client = \u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2
-client2 = \u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2
-clientAcksReport = \u03a4\u03b1 Acks \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03cc\u03c4\u03b9 \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9
-clientDataReports = \u03a4\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03cc\u03c4\u03b9 \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9
-clientInfo = \u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
-clientIpModified = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u039a\u03ac\u03c0\u03bf\u03b9\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03b5 Network Address Translation (NAT) \u03c4\u03c1\u03bf\u03c0\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03b7\u03bd \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
-clientIpNotFound = \u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5. \u0393\u03b9\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 Internet Explorer, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c4\u03c1\u03bf\u03c0\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5\u03c2 \u03c4\u03b7\u03c2 Java \n \u03ba\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf Tools - Internet Options - Security - Custom Level, \u03c0\u03b7\u03b3\u03b1\u03af\u03bd\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf\n Microsoft VM - Java permissions, \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf Custom, \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf Java Custom Settings\n Edit Permissions - Access to all Network Addresses, \u03ba\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03c4\u03bf Enable \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03ac \u03c3\u03ce\u03c3\u03c4\u03b5
-clientIpPreserved = \u039f\u03b9 \u03b4\u03b9\u03b5\u03c5\u03b8\u03cd\u03bd\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03b4\u03b9\u03b1\u03c4\u03b7\u03c1\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03ac\u03ba\u03c1\u03bf \u03c3\u03b5 \u03ac\u03ba\u03c1\u03bf
-clientSays = \u03b1\u03bb\u03bb\u03ac \u03bf \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03bb\u03ad\u03b5\u03b9
-close = \u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf
-comments = \u03a3\u03c7\u03cc\u03bb\u03b9\u03b1
-congestNo = \u0394\u03b5\u03bd \u03b1\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c5\u03bc\u03c6\u03cc\u03c1\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf.
-congestYes = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u03b7 \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03ac\u03bb\u03bb\u03b7\u03c2 \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7\u03c2 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf.
-connIdle = \u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03ae\u03c4\u03b1\u03bd \u03b1\u03bd\u03b5\u03bd\u03b5\u03c1\u03b3\u03ae
-connStalled = \u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c5\u03c0\u03ad\u03c3\u03c4\u03b7 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03ba\u03b1\u03b8\u03c5\u03c3\u03c4\u03ad\u03c1\u03b7\u03c3\u03b7
-connected = \u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf:
-connectedTo = \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf \u03c3\u03b5
-copy = \u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae
-defaultTests = \u0395\u03be'\u03bf\u03c1\u03b9\u03c3\u03bc\u03bf\u03cd \u03bc\u03b5\u03c4\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2
-delayBetweenTests = \u03ba\u03b1\u03b8\u03c5\u03c3\u03c4\u03ad\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03ac\u03bc\u03b5\u03c3\u03b1 \u03c3\u03c4\u03b9\u03c2 \u03bc\u03b5\u03c4\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2
-detailedStats = \u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03b5\u03c1\u03b5\u03af\u03c2 \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ad\u03c2
-dialup = Dial-up Modem
-dialup2 = Dial-up
-done = \u039f\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5.
-done2 = \u03a4\u03bf Tcpbw100 \u03bf\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b5
-dupAcksIn = duplicate acks \u03b5\u03bb\u03ae\u03c6\u03b8\u03b7\u03c3\u03b1\u03bd
-duplexFullHalf = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex Switch=Full and Host=half
-duplexHalfFull = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex Switch=half and Host=full
-duplexNok = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae! \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b7\u03bd \u03c0\u03b1\u03bb\u03b9\u03ac \u03c3\u03c5\u03bd\u03b8\u03ae\u03ba\u03b7:
-duplexOk = \u0392\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex.
-endOfEmail = \u03a4\u03ad\u03bb\u03bf\u03c2 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-excLoss = \u03a5\u03c0\u03b5\u03c1\u03b2\u03bf\u03bb\u03b9\u03ba\u03ae \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03c9\u03bd \u03bc\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03b5\u03c0\u03b9\u03b4\u03cc\u03c3\u03b5\u03b9\u03c2 \u03c3\u03b1\u03c2, \u03b5\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 auto-negotiate \u03c3\u03c4\u03bf\u03bd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c4\u03bf switch \u03c3\u03b1\u03c2
-excessiveErrors = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u03c5\u03c0\u03b5\u03c1\u03b2\u03bf\u03bb\u03b9\u03ba\u03ac \u03c0\u03bf\u03bb\u03bb\u03ac \u03bb\u03ac\u03b8\u03b7, \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf(\u03b1) \u03c4\u03bf\u03c5 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5.
-firewallNo = \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03af\u03c3\u03c9 \u03b1\u03c0\u03cc firewall. [\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b5\u03c6\u03ae\u03bc\u03b5\u03c1\u03bf port \u03c0\u03ad\u03c4\u03c5\u03c7\u03b5]
-firewallYes = \u03bc\u03ac\u03bb\u03bb\u03bf\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03af\u03c3\u03c9 \u03b1\u03c0\u03cc firewall. [\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b5\u03c6\u03ae\u03bc\u03b5\u03c1\u03bf port \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5]
-flowControlLimits = \u039f \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 \u03c1\u03bf\u03ae\u03c2 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03af\u03b6\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c3\u03c4\u03b1
-found100mbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 100 Mbps FastEthernet.
-found10gbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 10 Gbps 10 GigEthernet/OC-192.
-found10mbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 10 Mbps Ethernet.
-found1gbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 1 Gbps GigabitEthernet.
-found2.4gbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 2.4 Gbps OC-48.
-found45mbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 45 Mbps T3/DS3.
-found622mbps = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 622 Mbps OC-12.
-foundDialup = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 Dial-up modem.
-foundDsl = \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 Cable modem/DSL/T1.
-fullDuplex = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf Full duplex Fast Ethernet
-general = \u0393\u03b5\u03bd\u03b9\u03ba\u03ac
-generatingReport = \u03a0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03b4\u03b5\u03bb\u03c4\u03af\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2: \u0391\u03c5\u03c4\u03ae \u03b7 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03b8\u03b1 \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b7\u03b8\u03b5\u03af \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03c9\u03c0\u03bf \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03c4\u03b5
-getWeb100Var = Get Web100 Variables
-getWeb10gVar = Get Web10G Variables
-halfDuplex = \u03c5\u03c0\u03bf\u03b4\u03af\u03ba\u03c4\u03c5\u03bf Half duplex Fast Ethernet
-id = TCP/Web100/Web10G \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03bf \u0394\u03b9\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u0394\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5
-immediate = \u03b1\u03bc\u03ad\u03c3\u03c9\u03c2
-inboundTest = Tcpbw100 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b5\u03b9\u03c3\u03b5\u03c1\u03c7\u03cc\u03bc\u03b5\u03bd\u03b7\u03c2 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2...
-inboundWrongMessage = \u0394\u03bf\u03ba\u03b9\u03bc\u03ae: \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03c0\u03c1\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae: \u039b\u03ac\u03b2\u03b1\u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-incompatibleVersion = \u0391\u03c3\u03cd\u03bc\u03b2\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2
-incrRxBuf = \u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 buffer \u03bb\u03ae\u03c8\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
-incrTxBuf = \u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 buffer \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae NDT
-information = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2
-initialization = \u0391\u03c1\u03c7\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7...
-insufficient = \u0391\u03bd\u03b5\u03c0\u03b1\u03c1\u03ba\u03ae \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b9\u03c3\u03c4\u03b5\u03af \u03bf \u03c4\u03cd\u03c0\u03bf\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2.
-invokingMailtoFunction = Tcpbw100 Invoking Mailto function
-ipProtocol = \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf IP
-ipcFail = Interprocess communications failed, unknown link type.
-usingIpv4 = -- \u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 IPv4
-usingIpv6 = -- \u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 IPv6
-javaData = \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 Java
-kbyteBufferLimits = KByte buffer \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03af\u03b6\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c3\u03c4\u03b1
-limitNet = \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf
-limitRx = \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03b1\u03c1\u03b1\u03bb\u03ae\u03c0\u03c4\u03b7 \u03ba\u03b1\u03c4\u03ac \u03c4\u03bf
-limitTx = \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ad\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03bf
-linkFullDpx = \u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03b5 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 full duplex
-linkHalfDpx = \u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03b5 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 half duplex
-loggingWrongMessage = Logging to server: \u0395\u03bb\u03ae\u03c6\u03b8\u03b7 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-lookupError = \u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03b5\u03af \u03b7 \u0399\u03a1 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c0\u03ad\u03bd\u03b1\u03bd\u03c4\u03b9 \u03ac\u03ba\u03c1\u03bf\u03c5
-mboxWrongMessage = \u0394\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c5\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c5\u03c2: \u0395\u03bb\u03ae\u03c6\u03b8\u03b7 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-middlebox = \u0395\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c2
-middleboxFail = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03b3\u03b9\u03bd\u03cc\u03c4\u03b1\u03bd \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c5\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c5\u03c2
-middleboxFail2 = \u0391\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03b7 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c5\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c5\u03c2!
-middleboxModifyingMss = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u039a\u03ac\u03c0\u03bf\u03b9\u03bf\u03c2 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c2 \u03ba\u03cc\u03b2\u03bc\u03bf\u03c2 \u03c4\u03c1\u03bf\u03c0\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03bf MSS
-middleboxTest = Tcpbw100 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03b5\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03bf\u03c5\u03c2 \u03ba\u03cc\u03bc\u03b2\u03bf\u03c5\u03c2...
-meta = META
-metaFailed = \u0397 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5!
-metaTest = \u03bc\u03b5\u03c4\u03b1-\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae...
-metaWrongMessage = \u03bc\u03b5\u03c4\u03b1-\u03b4\u03bf\u03ba\u03b9\u03bc\u03ae: \u0395\u03bb\u03ae\u03c6\u03b8\u03b7 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-moreDetails = \u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2...
-name = \u038c\u03bd\u03bf\u03bc\u03b1
-ndtServerHas = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 NDT \u03ad\u03c7\u03b5\u03b9 \u03ad\u03bd\u03b1
-noPktLoss1 = \u039a\u03b1\u03bc\u03bc\u03af\u03b1 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03c9\u03bd
-noPktLoss2 = \u0394\u03b5\u03bd \u03c0\u03b1\u03c1\u03b1\u03c4\u03b7\u03c1\u03ae\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03bc\u03bc\u03af\u03b1 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03c9\u03bd
-numberOfTests = \u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bc\u03b5\u03c4\u03c1\u03ae\u03c3\u03b5\u03c9\u03bd
-of = \u03b1\u03c0\u03cc
-off = OFF
-ok = OK
-oldDuplexMismatch = "\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b7\u03bd \u03c0\u03b1\u03bb\u03b9\u03ac \u03c3\u03c5\u03bd\u03b8\u03ae\u03ba\u03b7: "
-on = ON
-ooOrder = \u03b1\u03bb\u03bb\u03ac \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03ad\u03c6\u03c4\u03b1\u03c3\u03b1\u03bd \u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac \u03ba\u03b1\u03c4\u03ac \u03c4\u03bf
-options = \u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2
-osData = \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ba\u03bf\u03cd \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2:
-otherClient = \u0395\u03c0\u03af \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03bd\u03c4\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c2 \u03ac\u03bb\u03bb\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b5\u03af\u03c4\u03b1\u03b9, \u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2 \u03b8\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03b5\u03bd\u03c4\u03cc\u03c2
-otherTraffic = \u039a\u03af\u03bd\u03b7\u03c3\u03b7 \u03ac\u03bb\u03bb\u03b7\u03c2 \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c0\u03c1\u03bf\u03ba\u03b1\u03bb\u03b5\u03af \u03c3\u03c5\u03bc\u03c6\u03cc\u03c1\u03b7\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7
-outboundTest = Tcpbw100 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03ad\u03be\u03c9...
-outboundWrongMessage = \u0394\u03bf\u03ba\u03b9\u03bc\u03ae: \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03c0\u03c1\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae: \u039b\u03ac\u03b2\u03b1\u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-packetQueuing = \u03a4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03bc\u03c0\u03b1\u03af\u03bd\u03bf\u03c5\u03bd \u03c3\u03b5 \u03bf\u03c5\u03c1\u03ac
-packetQueuingInfo = \u03a4\u03bf TCP (Transmission Control Protocol) \u03bc\u03b5\u03c4\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03bc\u03b5 \u03b1\u03be\u03b9\u03cc\u03c0\u03b9\u03c3\u03c4\u03bf \u03c4\u03c1\u03cc\u03c0\u03bf \u03b1\u03bd\u03ac\u03bc\u03b5\u03c3\u03b1 \u03c3\u03b5 \u03b4\u03cd\u03bf \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ad\u03c2. \u03a4\u03bf TCP \u03ba\u03b1\u03c4\u03b1\u03bb\u03b1\u03b2\u03b1\u03af\u03bd\u03b5\u03b9 \u03ba\u03b1\u03b9 \u03b4\u03b9\u03bf\u03c1\u03b8\u03ce\u03bd\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03bb\u03ac\u03b8\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b5\u03c2. \u03a4\u03bf TCP \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af buffers \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03b5\u03c4\u03cd\u03c7\u03b5\u03b9 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03b1\u03be\u03b9\u03bf\u03c0\u03b9\u03c3\u03c4\u03af\u03b1. \u0395\u03c0\u03b9\u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1, \u03bf\u03b9 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ad\u03c2 \u03ba\u03b1\u03b9 \u03bf\u03b9 \u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03b5\u03af\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd buffers \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c0\u03c4\u03ce\u03c3\u03b5\u03b9\u03c2 \u03cc\u03c0\u03bf\u03c5 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ad\u03c2 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03c3\u03c4\u03ad\u03bb\u03bd\u03bf\u03c5\u03bd \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c3\u03b5 \u03bc\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03be\u03cc\u03b4\u03bf\u03c5 \u03ae \u03cc\u03c0\u03bf\u03c5 \u03b7 \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03c4\u03c9\u03bd \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c9\u03bd \u03b1\u03bb\u03bb\u03ac\u03b6\u03b5\u03b9 (\u03c0.\u03c7. FastEthernet \u03c3\u03b5 DSL modem).\n\n \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 NDT \u03c0\u03b1\u03c1\u03ac\u03b3\u03b5\u03b9 \u03ba\u03b1\u03b9 \u03c3\u03c4\u03ad\u03bb\u03bd\u03b5\u03b9 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c3\u03c4\u03bf \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03b3\u03b9\u03b1 10 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1. \u03a3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b5\u03c2 \u03c0\u03b5\u03c1\u03b9\u03c0\u03c4\u03ce\u03c3\u03b5\u03b9\u03c2 \u03bf \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b1\u03c1\u03ac\u03b3\u03b5\u03b9 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c0\u03b9\u03bf \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c1\u03c5\u03b8\u03bc\u03cc \u03bc\u03b5 \u03c4\u03bf\u03bd \u03bf\u03c0\u03bf\u03af\u03bf \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c3\u03c4\u03b5\u03af\u03bb\u03b5\u03b9 \u03c4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c3\u03c4\u03bf \u03b4\u03af\u03ba\u03c4\u03c5\u03bf (\u03c0.\u03c7., \u03ad\u03bd\u03b1\u03c2 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03c4\u03c9\u03bd 2 GHz \u03bd\u03b1 \u03c3\u03c4\u03ad\u03bb\u03bd\u03b5\u03b9 \u03c3\u03b5 \u03ad\u03bd\u03b1\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 DSL).\n \u038c\u03c4\u03b1\u03bd \u03c3\u03c5\u03bc\u03b2\u03b1\u03af\u03bd\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc, \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b5\u03af\u03bd\u03bf\u03c5\u03bd \u03c3\u03c4\u03b7\u03bd \u03bf\u03c5\u03c1\u03ac \u03b5\u03be\u03cc\u03b4\u03bf\u03c5 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03cc\u03c4\u03b1\u03bd \u03c4\u03b1 10 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03bf\u03c5\u03bd. \u03a4\u03bf TCP \u03b8\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03bd\u03b1 \u03c3\u03c4\u03ad\u03bb\u03bd\u03b5\u03b9 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03bf\u03c5\u03c1\u03ac\u03c2 \u03ba\u03b1\u03b9 \u03bf \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b8\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03b1 \u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c4\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9, \u03bc\u03b5 \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03b9 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf \u03b1\u03c0\u03cc \u03cc\u03c3\u03bf \u03b1\u03bd\u03b5\u03bc\u03ad\u03bd\u03b5\u03c4\u03bf.\n\n \u039a\u03ac\u03c4\u03b9 \u03c4\u03ad\u03c4\u03bf\u03b9\u03bf \u03c3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b4\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae\u03c2. \u0394\u03b5\u03bd \u03c7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03b4\u03b9\u03cc\u03c1\u03b8\u03c9\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c6\u03b1\u03b9\u03bd\u03cc\u03bc\u03b5\u03bd\u03bf.
-packetSizePreserved = \u03a4\u03bf \u03bc\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03ba\u03ad\u03c4\u03bf\u03c5 \u03b4\u03b9\u03b1\u03c4\u03b7\u03c1\u03b5\u03af\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03ac\u03ba\u03c1\u03b7 \u03c3\u03b5 \u03ac\u03ba\u03c1\u03b7
-packetsize = \u03bc\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03c0\u03b1\u03ba\u03ad\u03c4\u03bf\u03c5
-pc = PC
-pctOfTime = % \u03c4\u03bf\u03c5 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5
-performedTests = \u0394\u03bf\u03ba\u03b9\u03bc\u03ad\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03b3\u03b9\u03bd\u03b1\u03bd
-pktsRetrans = \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c0\u03bf\u03c5 \u03be\u03b1\u03bd\u03b1\u03bc\u03b5\u03c4\u03b1\u03b4\u03cc\u03b8\u03b7\u03ba\u03b1\u03bd
-possibleDuplexFullHalf = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex Switch=Full and \u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2=half
-possibleDuplexHalfFull = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex Switch=half and \u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2=full
-possibleDuplexHalfFullWarning = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex Switch=half and \u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2=full
-preferIPv6 = \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7 IPv6
-printDetailedStats = \u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03c5\u03c4\u03b9\u03ba\u03ce\u03bd \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ce\u03bd
-protocolError = \u039b\u03ac\u03b8\u03bf\u03c2 \u03c3\u03c4\u03bf \u03c0\u03c1\u03c9\u03c4\u03cc\u03ba\u03bf\u03bb\u03bb\u03bf! \u03a0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b1\u03bc\u03b5 'prepare', \u03c0\u03ae\u03c1\u03b1\u03bc\u03b5: 0x
-qSeen = \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03bc\u03c0\u03b1\u03af\u03bd\u03bf\u03c5\u03bd \u03c3\u03b5 \u03bf\u03c5\u03c1\u03ac
-ready = \u03a4\u03bf Tcpbw100 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03c4\u03bf\u03b9\u03bc\u03bf
-receiveBufferShouldBe = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u03a4\u03bf buffer \u03bb\u03ae\u03c8\u03b7\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9
-receiving = \u039b\u03ae\u03c8\u03b7 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03b5\u03c3\u03bc\u03ac\u03c4\u03c9\u03bd...
-reportProblem = \u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2
-resultsParseError = \u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 \u03b5\u03c1\u03bc\u03b7\u03bd\u03b5\u03cd\u03c3\u03bf\u03c5\u03bc\u03b5 \u03c4\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03c4\u03c9\u03bd \u03b4\u03bf\u03ba\u03b9\u03bc\u03ce\u03bd!
-resultsTimeout = \u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae! \u03a4\u03b5\u03bb\u03b5\u03af\u03c9\u03c3\u03b5 \u03bf \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03b3\u03b9\u03bd\u03cc\u03c4\u03b1\u03bd \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd, \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03b1\u03bd\u03b1\u03bd\u03c4\u03b9\u03c3\u03c4\u03bf\u03b9\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 duplex
-resultsWrongMessage = \u0391\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ce\u03bd: \u039b\u03ac\u03b2\u03b1\u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2!
-rtt = \u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 (RTT)
-rttFail = \u039f \u03b1\u03bb\u03b3\u03cc\u03c1\u03b9\u03b8\u03bc\u03bf\u03c2 \u03b1\u03bd\u03af\u03c7\u03bd\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03bb\u03cc\u03b3\u03c9 \u03c5\u03c0\u03b5\u03c1\u03b2\u03bf\u03bb\u03b9\u03ba\u03ac \u03bc\u03b5\u03b3\u03ac\u03bb\u03c9\u03bd \u03c7\u03c1\u03cc\u03bd\u03c9\u03bd \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 (RTT).
-runningInboundTest = \u0394\u03bf\u03ba\u03b9\u03bc\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03bc\u03ad\u03c3\u03b1 \u03b3\u03b9\u03b1 10 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 (\u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7) . . . . . .
-runningOutboundTest = \u0394\u03bf\u03ba\u03b9\u03bc\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03ad\u03be\u03c9 \u03b3\u03b9\u03b1 10 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 (\u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae) . . . . .
-s2c = \u0395\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7:
-s2cPacketQueuingDetected = [\u0395\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03ae\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7]: \u0391\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03c0\u03b1\u03ba\u03ad\u03c4\u03b1 \u03bc\u03c0\u03b1\u03af\u03bd\u03bf\u03c5\u03bd \u03c3\u03b5 \u03bf\u03c5\u03c1\u03ac
-s2cThroughput = \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
-s2cThroughputFailed = \u0391\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03c0\u03c1\u03bf\u03c2 \u03c4\u03bf\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7!
-sackReceived = SACK blocks \u03b5\u03bb\u03ae\u03c6\u03b8\u03b7\u03c3\u03b1\u03bd
-scalingFactors = \u03a0\u03b1\u03c1\u03ac\u03b3\u03bf\u03bd\u03c4\u03b5\u03c2 \u039a\u03bb\u03b9\u03bc\u03ac\u03ba\u03c9\u03c3\u03b7\u03c2
-seconds = \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1
-sendingMetaInformation = \u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03bc\u03b5\u03c4\u03b1\u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2 . . . . . . . . . . . . . . . . . . .
-server = O \u0395\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2
-serverAcksReport = \u03a4\u03b1 Acks \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03cc\u03c4\u03b9 \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9
-serverFault = \u039b\u03ac\u03b8\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae: \u03b1\u03bd\u03b9\u03c7\u03bd\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03b1\u03b3\u03bd\u03ce\u03c3\u03c4\u03bf\u03c5 \u03c4\u03cd\u03c0\u03bf\u03c5 \u03b4\u03c5\u03c3\u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1
-serverBusy = \u0391\u03c0\u03b1\u03c3\u03c7\u03bf\u03bb\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2: \u03a0\u03ac\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03bf\u03af \u03c0\u03b5\u03bb\u03ac\u03c4\u03b5\u03c2 \u03c3\u03c4\u03b7\u03bd \u03bf\u03c5\u03c1\u03ac \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae...\u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1
-serverBusy15s = \u0391\u03c0\u03b1\u03c3\u03c7\u03bf\u03bb\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2: \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5 15 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03b5\u03b9
-serverBusy30s = \u0391\u03c0\u03b1\u03c3\u03c7\u03bf\u03bb\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2: \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5 30 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03b5\u03b9
-serverBusy60s = \u0391\u03c0\u03b1\u03c3\u03c7\u03bf\u03bb\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2: \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5 60 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03b5\u03b9
-serverDataReports = \u03a4\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03cc\u03c4\u03b9 \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9
-serverFail = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03bb\u03ae\u03c8\u03b7 \u03c4\u03c9\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd
-serverIpModified = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u039a\u03ac\u03c0\u03bf\u03b9\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03b5 Network Address Translation (NAT) \u03c4\u03c1\u03bf\u03c0\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03b7\u03bd \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP \u03c4\u03bf\u03c5 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
-serverIpPreserved = \u039f\u03b9 \u03b4\u03b9\u03b5\u03c5\u03b8\u03cd\u03bd\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae \u03b4\u03b9\u03b1\u03c4\u03b7\u03c1\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03ac\u03ba\u03c1\u03bf \u03c3\u03b5 \u03ac\u03ba\u03c1\u03bf
-serverNotRunning = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03b4\u03b5\u03bd \u03c4\u03c1\u03ad\u03c7\u03b5\u03b9: \u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03b7 \u03b4\u03b9\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 web100srv \u03c3\u03c4\u03bf\u03bd \u03b1\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03bf \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae
-serverSays = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03bb\u03ad\u03b5\u03b9
-sfwFail = \u0391\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5 \u03b7 \u03b1\u03c0\u03bb\u03ae \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 firewall!
-sfwSocketFail = \u03b1\u03c0\u03bb\u03ae \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 firewall: \u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03bd\u03cc\u03c2 listen socket
-sfwTest = \u03b1\u03c0\u03bb\u03ae \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 firewall...
-sfwWrongMessage = \u03b1\u03c0\u03bb\u03ae \u03b4\u03bf\u03ba\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 firewall: \u039b\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-showOptions = \u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ce\u03bd
-simpleFirewall = \u0391\u03c0\u03bb\u03cc firewall
-sleep10m = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 10 \u03bb\u03b5\u03c0\u03c4\u03ac...
-sleep1m = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 1 \u03bb\u03b5\u03c0\u03c4\u03cc...
-sleep30m = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 30 \u03bb\u03b5\u03c0\u03c4\u03ac...
-sleep5m = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 5 \u03bb\u03b5\u03c0\u03c4\u03ac...
-sleep12h = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 12 \u03ce\u03c1\u03b5\u03c2...
-sleep1d = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 1 \u03bc\u03ad\u03c1\u03b1...
-sleep2h = \u03b4\u03b9\u03ac\u03bb\u03b5\u03b9\u03bc\u03bc\u03b1 \u03b3\u03b9\u03b1 2 \u03ce\u03c1\u03b5\u03c2...
-start = \u0388\u039d\u0391\u03a1\u039e\u0397
-startingTest = \u0388\u03bd\u03b1\u03c1\u03be\u03b7 \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2
-statistics = \u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac
-stop = \u03a3\u03a4\u039f\u03a0
-stopped = \u039f\u03b9 \u03bc\u03b5\u03c4\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c4\u03b1\u03bc\u03b1\u03c4\u03ae\u03b8\u03b7\u03ba\u03b1\u03bd!
-stopping = \u0394\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae...
-systemFault = \u039b\u03ac\u03b8\u03bf\u03c2 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2
-test = \u039c\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7
-testsuiteWrongMessage = \u0394\u03b9\u03b1\u03c0\u03c1\u03b1\u03b3\u03bc\u03ac\u03c4\u03b5\u03c5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c3\u03c5\u03bd\u03cc\u03bb\u03bf\u03c5 \u03c4\u03c9\u03bd \u03b4\u03bf\u03ba\u03b9\u03bc\u03ce\u03bd: \u039b\u03ac\u03b2\u03b1\u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-theSlowestLink = \u0397 \u03c0\u03b9\u03bf \u03b1\u03c1\u03b3\u03ae \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03b5 \u03bf\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b7 \u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1
-theoreticalLimit = \u03a4\u03bf \u03b8\u03b5\u03c9\u03c1\u03b7\u03c4\u03b9\u03ba\u03cc \u03cc\u03c1\u03b9\u03bf \u03c4\u03bf\u03c5 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9
-thisConnIs = \u0391\u03c5\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9
-timesPktLoss = \u03c6\u03bf\u03c1\u03ad\u03c2 \u03bb\u03cc\u03b3\u03c9 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1\u03c2 \u03c0\u03b1\u03ba\u03ad\u03c4\u03c9\u03bd
-toMaximizeThroughput = kbytes \u03b3\u03b9\u03b1 \u03bc\u03b5\u03b3\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03b1\u03c7\u03cd\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b4\u03b9\u03b1\u03bc\u03b5\u03c4\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2
-troubleReportFrom = \u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf NDT \u03c3\u03c4\u03bf\u03bd
-unableToDetectBottleneck = \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03b4\u03b5\u03bd \u03ba\u03b1\u03c4\u03ac\u03c6\u03b5\u03c1\u03b5 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03ac\u03b2\u03b5\u03b9 \u03c4\u03bf\u03bd \u03c4\u03cd\u03c0\u03bf \u03c4\u03b7\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03af\u03b6\u03b5\u03b9 \u03c4\u03bf \u03b5\u03cd\u03c1\u03bf\u03c2 \u03b6\u03ce\u03bd\u03b7\u03c2.
-unableToObtainIP = \u0391\u03b4\u03cd\u03bd\u03b1\u03c4\u03bf \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03b5\u03af \u03b7 \u03c4\u03bf\u03c0\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 IP
-unknownID = \u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf ID \u03bc\u03ad\u03c4\u03c1\u03b7\u03c3\u03b7\u03c2
-unknownServer = \u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf\u03c2 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2
-unsupportedClient = \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1: \u039f \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 cli
-vendor = \u039a\u03b1\u03c4\u03b1\u03c3\u03ba\u03b5\u03c5\u03b1\u03c3\u03c4\u03ae\u03c2
-version = \u0388\u03ba\u03b4\u03bf\u03c3\u03b7
-versionWrongMessage = \u0394\u03b9\u03b1\u03c0\u03c1\u03b1\u03b3\u03bc\u03ac\u03c4\u03b5\u03c5\u03c3\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 NDT: \u039b\u03ac\u03b2\u03b1\u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c5 \u03bc\u03b7\u03bd\u03cd\u03bc\u03b1\u03c4\u03bf\u03c2
-web100Details = Web100 \u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03b5\u03c1\u03ae\u03c2 \u03b1\u03bd\u03ac\u03bb\u03c5\u03c3\u03b7
-web100KernelVar = Web100 \u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c5\u03c1\u03ae\u03bd\u03b1
-web100Stats = \u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03bc\u03ad\u03c3\u03c9 \u03c4\u03bf\u03c5 Web100
-web100Var = \u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 Web100
-web100rtt = To Web100 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03bf \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 (Round trip time)
-web100tcpOpts = To Web100 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03c4\u03bf TCP \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03b9\u03c2 \u03b5\u03be\u03ae\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2:
-web10gDetails = Web10G \u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03b5\u03c1\u03ae\u03c2 \u03b1\u03bd\u03ac\u03bb\u03c5\u03c3\u03b7
-web10gKernelVar = Web10G \u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c5\u03c1\u03ae\u03bd\u03b1
-web10gStats = \u03a3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03bc\u03ad\u03c3\u03c9 \u03c4\u03bf\u03c5 Web10G
-web10gVar = \u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 Web10G
-web10grtt = To Web10G \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03bf \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 (Round trip time)
-web10gtcpOpts = To Web10G \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03c4\u03bf TCP \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03b9\u03c2 \u03b5\u03be\u03ae\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2:
-willImprove = \u03b8\u03b1 \u03b2\u03b5\u03bb\u03c4\u03b9\u03ce\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03af\u03b4\u03bf\u03c3\u03b7
-workstation = \u03a3\u03c4\u03b1\u03b8\u03bc\u03cc\u03c2 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2
-your = \u03a4\u03bf \u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2
-yourPcHas = \u039f \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9
-connectingTo = \u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf
-toRunTest = to run test
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_en_US.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,233 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
-10mbps = 10 Mbps Ethernet subnet
-10mins = 10 mins
-12hours = 12 hours
-1day = 1 day
-1gbps = 1.0 Gbps Gigabit Ethernet subnet
-1min = 1 min
-2.4gbps = 2.4 Gbps OC-48 subnet
-2hours = 2 hours
-30mins = 30 mins
-45mbps = 45 Mbps T3/DS3 subnet
-5mins = 5 mins
-622mbps = a 622 Mbps OC-12 subnet
-and = and
-architecture = Architecture
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Packet queueing detected
-c2sThroughput = C2S throughput
-c2sThroughputFailed = C2S throughput test FAILED!
-cabledsl = Cable/DSL modem
-cablesNok = Warning: excessive network errors, check network cable(s)
-cablesOk = Good network cable(s) found
-checkingFirewalls = Checking for firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Checking for Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Click START to start the test
-clickStart2 = Click START to re-test
-client = Client
-client2 = Client
-clientAcksReport = Client Acks report link is
-clientDataReports = Client Data reports link is
-clientInfo = Client System Details
-clientIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
-clientIpNotFound = Client IP address not found. For IE users, modify the Java parameters\n click Tools - Internet Options - Security - Custom Level, scroll down to\n Microsoft VM - Java permissions and click Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, click Eanble and save changes
-clientIpPreserved = Client IP addresses are preserved End-to-End
-clientSays = but Client says
-close = Close
-comments = Comments
-congestNo = No network congestion discovered.
-congestYes = Information: throughput is limited by other network traffic.
-connIdle = The connection was idle
-connStalled = The connection stalled
-connected = Connected to:
-connectedTo = is connected to a
-copy = Copy
-defaultTests = Default tests
-delayBetweenTests = Delay between tests
-detailedStats = Detailed Statistics
-dialup = Dial-up Modem
-dialup2 = Dial-up
-done = Done.
-done2 = Tcpbw100 done
-dupAcksIn = duplicate acks received
-duplexFullHalf = Alarm: Duplex Mismatch condition detected Switch=Full and Host=half
-duplexHalfFull = Alarm: Duplex Mismatch condition detected Switch=half and Host=full
-duplexNok = Warning: Old Duplex mismatch condition detected:
-duplexOk = Normal duplex operation found.
-endOfEmail = End Of Email Message
-excLoss = Excessive packet loss is impacting your performance, check the auto-negotiate function on your local PC and network switch
-excessiveErrors = Alarm: Excessive errors, check network cable(s).
-firewallNo = is not behind a firewall. [Connection to the ephemeral port was successful]
-firewallYes = is probably behind a firewall. [Connection to the ephemeral port failed]
-flowControlLimits = The network based flow control limits the throughput to
-found100mbps = 100 Mbps FastEthernet link found.
-found10gbps = 10 Gbps 10 GigEthernet/OC-192 link found.
-found10mbps = 10 Mbps Ethernet link found.
-found1gbps = 1 Gbps GigabitEthernet link found.
-found2.4gbps = 2.4 Gbps OC-48 link found.
-found45mbps = 45 Mbps T3/DS3 link found.
-found622mbps = 622 Mbps OC-12 link found.
-foundDialup = Dial-up modem link found.
-foundDsl = Cable modem/DSL/T1 link found.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = General
-generatingReport = Generating Trouble Report: This report will be emailed to the person you specify
-getWeb100Var = Get Web100 Variables
-getWeb10gVar = Get Web10G Variables
-halfDuplex = Half duplex Fast Ethernet subnet
-id = TCP/Web100/Web10G Network Diagnostic Tool
-immediate = immediate
-inboundTest = Tcpbw100 inbound test...
-inboundWrongMessage = C2S throughput test: Received wrong type of the message
-incompatibleVersion = Incompatible version number
-incrRxBuf = Increasing the the client's receive buffer
-incrTxBuf = Increasing the NDT server's send buffer
-information = Information
-initialization = Initialization...
-insufficient = Insufficent data collected to determine link type.
-invokingMailtoFunction = Tcpbw100 Invoking Mailto function
-ipProtocol = IP protocol
-ipcFail = Interprocess communications failed, unknown link type.
-usingIpv4 = -- Using IPv4 address
-usingIpv6 = -- Using IPv6 address
-javaData = Java data
-kbyteBufferLimits = KByte buffer which limits the throughput to
-limitNet = network limited
-limitRx = receiver limited
-limitTx = sender limited
-linkFullDpx = Link set to Full Duplex mode
-linkHalfDpx = Link set to Half Duplex mode
-loggingWrongMessage = Logging to server: Received wrong type of the message
-lookupError = Unable to obtain remote IP address
-mboxWrongMessage = Middlebox test: Received wrong type of the message
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = Server Failed while middlebox testing
-middleboxFail2 = Middlebox test FAILED!
-middleboxModifyingMss = Information: Network Middlebox is modifying MSS variable
-middleboxTest = Tcpbw100 Middlebox test...
-moreDetails = More Details...
-name = Name
-ndtServerHas = The NDT server has a
-noPktLoss1 = No packet loss
-noPktLoss2 = No packet loss was observed
-numberOfTests = Number of tests
-of = of
-off = OFF
-ok = OK
-oldDuplexMismatch = "Warning: Old Duplex mismatch condition detected: "
-on = ON
-ooOrder = but packets arrived out-of-order
-options = Options
-osData = OS data:
-otherClient = Another client is currently being served, your test will begin within
-otherTraffic = Information: Other network traffic is congesting the link
-outboundTest = Tcpbw100 outbound test...
-outboundWrongMessage = C2S throughput test: Received wrong type of the message
-packetQueuing = Packet queuing
-packetQueuingInfo = TCP (Transmission Control Protocol) reliably transfers data between two\n Internet hosts. It automatically detects and recovers from errors and\n losses. TCP uses buffers to provide this reliability. In addition,\n switches and routers use buffers to handle cases where multiple input\n links send packets to a single output link or link speeds change\n (FastEthernet to DSL modem).\n\n The NDT server generates and sends 10 seconds of data to the client. In\n some cases the server can generate data faster than it can send packets\n into the network (e.g., a 2 GHz CPU sending to a DSL connected client).\n When this happens, some packets may remain in the server output queue\n when the 10 second timer expires. TCP will automatically continue to\n send these queued packets and the client will continue to accept and\n process these incoming packets. This will result in the client test\n running longer than expected.\n\n This condition has occurred during this test. No action is required to\n resolve this issue.
-packetSizePreserved = Packet size is preserved End-to-End
-packetsize = the Packet size
-pc = PC
-pctOfTime = % of the time
-performedTests = Performed tests
-pktsRetrans = packets retransmitted
-possibleDuplexFullHalf = Alarm: Possible Duplex Mismatch condition detected Switch=Full and Host=half
-possibleDuplexHalfFull = Alarm: Possible Duplex Mismatch condition detected Switch=half and Host=full
-possibleDuplexHalfFullWarning = Warning: Possible Duplex Mismatch condition detected Switch=half and Host=full
-preferIPv6 = prefer IPv6
-printDetailedStats = Print Detailed Statistics
-protocolError = Protocol error! Expected 'prepare', got: 0x
-qSeen = throughput test: Packet queuing detected
-ready = Tcpbw100 ready
-receiveBufferShouldBe = Information: The receive buffer should be
-receiving = Receiving results...
-reportProblem = Report problem
-resultsParseError = Error parsing test results!
-resultsTimeout = Warning! Client time-out while reading data, possible duplex mismatch exists
-resultsWrongMessage = Tests results: Received wrong type of the message
-rtt = RTT
-rttFail = Link detection algorithm failed due to excessive Round Trip Times.
-runningInboundTest = running 10s inbound test (server-to-client [S2C]) . . . . . .
-runningOutboundTest = running 10s outbound test (client-to-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Packet queueing detected
-s2cThroughput = S2C throughput
-s2cThroughputFailed = S2C throughput test FAILED!
-sackReceived = SACK blocks received
-scalingFactors = Scaling Factors
-seconds = seconds
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Server
-serverAcksReport = Server Acks report link is
-serverFault = Server Fault: unknown fault occurred. Please try again later
-serverBusy = Server Busy: Too many clients waiting in server queue. Please try again later
-serverBusy15s = Server Busy: Please wait 15 seconds for previous test to finish
-serverBusy30s = Server busy: Please wait 30 seconds for previous test to finish
-serverBusy60s = Server Busy: Please wait 60 seconds for previous test to finish
-serverDataReports = Server Data reports link is
-serverFail = Server failed while receiving data
-serverIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
-serverIpPreserved = Server IP addresses are preserved End-to-End
-serverNotRunning = Server process not running: start web100srv process on remote server
-serverSays = Server says
-sfwFail = Simple firewall test FAILED!
-sfwSocketFail = Simple firewall test: Cannot create listen socket
-sfwTest = Simple firewall test...
-sfwWrongMessage = Simple firewall test: Received wrong type of the message
-showOptions = Show options
-simpleFirewall = Simple firewall
-sleep10m = Sleeping for 10 mins...
-sleep1m = Sleeping for 1 min...
-sleep30m = Sleeping for 30 mins...
-sleep5m = Sleeping for 5 mins...
-sleep12h = Sleeping for 12 hours...
-sleep1d = Sleeping for 1 day...
-sleep2h = Sleeping for 2 hours...
-start = START
-startingTest = Starting test
-statistics = Statistics
-stop = STOP
-stopped = The tests were stopped!
-stopping = Stopping...
-systemFault = System Fault
-test = Test
-testsuiteWrongMessage = Negotiating test suite: Received wrong type of the message
-theSlowestLink = The slowest link in the end-to-end path is a
-theoreticalLimit = The theoretical network limit is
-thisConnIs = This connection is
-timesPktLoss = times due to packet loss
-toMaximizeThroughput = kbytes to maximize throughput
-troubleReportFrom = Trouble Report from NDT on
-unableToDetectBottleneck = Server unable to determine bottleneck link type.
-unableToObtainIP = Unable to obtain local IP address
-unknownID = Unknown test ID
-unknownServer = Unknown server
-unsupportedClient = Information: The server does not support this command line client
-vendor = Vendor
-version = Version
-versionWrongMessage = Negotiating NDT version: Received wrong type of the message
-web100Details = Web100 Detailed Analysis
-web100KernelVar = Web100 Kernel Variables
-web100Stats = Web100 Enabled Statistics
-web100Var = Web100 Variables
-web100rtt = Web100 reports the Round trip time
-web100tcpOpts = Web100 reports TCP negotiated the optional Performance Settings to:
-web10gDetails = Web10G Detailed Analysis
-web10gKernelVar = Web10G Kernel Variables
-web10gStats = Web10G Enabled Statistics
-web10gVar = Web10G Variables
-web10grtt = Web10G reports the Round trip time
-web10gtcpOpts = Web10G reports TCP negotiated the optional Performance Settings to:
-willImprove = will improve performance
-workstation = Workstation
-your = Your
-yourPcHas = Your PC/Workstation has a
-connectingTo = Connecting to
-toRunTest = to run test
-unexpectedException=Unexpected exception
-withoutMessage=without message
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_fr_FR.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,231 +0,0 @@
-10gbps = sous-r\u00E9seau 10 Gbps 10 Gigabit Ethernet/OC-192
-10mbps = sous-r\u00E9seau 10 Mbps Ethernet
-10mins = 10 minutes
-12hours = 12 heures
-1day = 1 jour
-1gbps = sous-r\u00E9seau 1.0 Gbps Gigabit Ethernet
-1min = 1 minute
-2.4gbps = sous-r\u00E9seau 2.4 Gbps OC-48
-2hours = 2 heures
-30mins = 30 minutes
-45mbps = sous-r\u00E9seau 45 Mbps T3/DS3
-5mins = 5 minutes
-622mbps = sous-r\u00E9seau 622 Mbps OC-12
-and = et
-architecture = Architecture
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: D\u00E9tection de mise en file d'attente de paquets
-c2sThroughput = d\u00E9bit C2S
-c2sThroughputFailed = test de d\u00E9bit C2S \u00C9CHOU\u00C9!
-cabledsl = modem C\u00E2ble/DSL
-cablesNok = Attention: trop d'erreurs r\u00E9seau, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau
-cablesOk = Bon(s) c\u00E2ble(s) r\u00E9seau trouv\u00E9s
-checkingFirewalls = V\u00E9rification de pr\u00E9sence de Firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = V\u00E9rification de pr\u00E9sence de Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Cliquez sur D\u00C9MARRER pour commencer le test
-clickStart2 = Cliquez sur D\u00C9MARRER pour re-tester
-client = Client
-client2 = Client
-clientAcksReport = Le lien des Acks clients est
-clientDataReports = Le lien des rapports de donn\u00E9es client est
-clientInfo = D\u00E9tails du syst\u00E8me client
-clientIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
-clientIpNotFound = L'adresse IP du client non trouv\u00E9e. Pour les utilisateurs IE, modifiez les param\u00E8tres Java \n Cliquez sur Outils - Options Internet - S\u00E9curit\u00E9 - Niveau personnalis\u00E9, descendez jusqu'\u00E0\n Microsoft VM - permissions Java et cliquez sur Personnalis\u00E9, cliquez sur Param\u00E8tres Java personnalis\u00E9s\n \u00C9diter les permissions - Acc\u00E8s \u00E0 toutes les adresses r\u00E9seau, cliquez sur Appliquer et sauvegardez
-clientIpPreserved = Les adresses IP serveur sont pr\u00E9serv\u00E9es de bout en bout
-clientSays = mais le Client dit
-close = Fermez
-comments = Commentaires
-congestNo = Aucune congestion r\u00E9seau d\u00E9tect\u00E9e.
-congestYes = Information: le d\u00E9bit est limit\u00E9 par d'autres flux r\u00E9seau.
-connIdle = La connexion a \u00E9t\u00E9 oisive
-connStalled = La connexion a \u00E9t\u00E9 suspendue
-connected = Connect\u00E9 \u00E0:
-connectedTo = est connect\u00E9 \u00E0 un
-copy = Copiez
-defaultTests = Tests par d\u00E9faut
-delayBetweenTests = D\u00E9lai entre les tests
-detailedStats = Statistiques d\u00E9taill\u00E9es
-dialup = Dial-up Modem
-dialup2 = Dial-up
-done = R\u00E9alis\u00E9.
-done2 = Tcpbw100 r\u00E9alis\u00E9
-dupAcksIn = r\u00E9ception de acks en doublon
-duplexFullHalf = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
-duplexHalfFull = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-duplexNok = Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e:
-duplexOk = Op\u00E9ration normale du duplex d\u00E9tect\u00E9e.
-endOfEmail = Fin de message e-mail
-excLoss = Une perte de paquets excessive diminue vos performances, v\u00E9rifiez les r\u00E9glages auto-negotiate de votre PC et du commutateur r\u00E9seau.
-excessiveErrors = Alerte: Trop d'erreurs, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau.
-firewallNo = n'est pas derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re r\u00E9ussie]
-firewallYes = est probablement derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re \u00E9chou\u00E9e]
-flowControlLimits = Le contr\u00F4le de flux du r\u00E9seau limite le d\u00E9bit \u00E0
-found100mbps = Lien 100 Mbps FastEthernet d\u00E9tect\u00E9.
-found10gbps = Lien 10 Gbps 10 GigEthernet/OC-192 d\u00E9tect\u00E9.
-found10mbps = Lien 10 Mbps Ethernet d\u00E9tect\u00E9.
-found1gbps = Lien 1 Gbps GigabitEthernet d\u00E9tect\u00E9.
-found2.4gbps = Lien 2.4 Gbps OC-48 d\u00E9tect\u00E9.
-found45mbps = Lien 45 Mbps T3/DS3 d\u00E9tect\u00E9.
-found622mbps = Lien 622 Mbps OC-12 d\u00E9tect\u00E9.
-foundDialup = Lien modem Dial-up d\u00E9tect\u00E9.
-foundDsl = Lien C\u00E2ble modem/DSL/T1 d\u00E9tect\u00E9.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = G\u00E9n\u00E9ral
-generatingReport = G\u00E9n\u00E9ration du rapport d'incident: Ce rapport sera envoy\u00E9 \u00E0 la personne sp\u00E9cifi\u00E9e
-getWeb100Var = R\u00E9cup\u00E9rer les variables Web100
-getWeb10gVar = R\u00E9cup\u00E9rer les variables Web10G
-halfDuplex = Half duplex Fast Ethernet subnet
-id = Outil de diagnostics r\u00E9seau TCP/Web100/Web10G
-immediate = imm\u00E9diat
-inboundTest = test d'entr\u00E9e Tcpbw100...
-inboundWrongMessage = Test de d\u00E9bit C2S : r\u00E9ception du mauvais type de message
-incompatibleVersion = Num\u00E9ro de version incompatible
-incrRxBuf = Agrandissement du tampon de r\u00E9ception client
-incrTxBuf = Agrandissement du tampon d'\u00E9mission du serveur NDT
-information = Information
-initialization = Initialisation...
-insufficient = Trop peu de donn\u00E9es collect\u00E9es pour d\u00E9terminer le type de lien.
-invokingMailtoFunction = Tcpbw100 Appel de la fonction Mailto
-ipProtocol = Protocole IP
-ipcFail = Communication inter-processus \u00E9chou\u00E9e, type de lien inconnu.
-usingIpv4 = -- Utilisation de l'adresse IPv4
-usingIpv6 = -- Utilisation de l'adresse IPv6
-javaData = Donn\u00E9es Java
-kbyteBufferLimits = KByte tampon, ce qui limite le d\u00E9bit \u00E0
-limitNet = limit\u00E9 par le r\u00E9seau
-limitRx = limit\u00E9 par le r\u00E9cepteur
-limitTx = limit\u00E9 par l'\u00E9metteur
-linkFullDpx = Lien r\u00E9gl\u00E9 en mode Full Duplex
-linkHalfDpx = Lien r\u00E9gl\u00E9 en mode Half Duplex
-loggingWrongMessage = Enregistrement aupr\u00E8s du serveur: r\u00E9ception du mauvais type de message
-lookupError = Impossible d'obtenir l'adresse IP distante
-mboxWrongMessage = Test de middlebox : r\u00E9ception du mauvais type de message
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = \u00C9chec du serveur lors du test de middlebox
-middleboxFail2 = Test de middlebox \u00C9CHOU\u00C9!
-middleboxModifyingMss = Information: le Middlebox modifie la variable MSS
-middleboxTest = Tcpbw100 test de Middlebox...
-moreDetails = Plus de d\u00E9tails...
-name = Nom
-ndtServerHas = Le serveur NDT a un
-noPktLoss1 = Pas de perte de paquets
-noPktLoss2 = Aucune perte de paquets n'a \u00E9t\u00E9 observ\u00E9e
-numberOfTests = Nombre de tests
-of = de
-off = OFF
-ok = OK
-oldDuplexMismatch = "Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e: "
-on = ON
-ooOrder = mais les paquets sont arriv\u00E9s dans le d\u00E9sordre
-options = Options
-osData = Donn\u00E9es de l'OS:
-otherClient = Un autre client est actuellement en train d'\u00EAtre servi, votre test commencera dans
-otherTraffic = Information: d'autres flux r\u00E9seaux congestionnent le lien
-outboundTest = Tcpbw100 test de sortie ...
-outboundWrongMessage = Test de d\u00E9bit C2S : R\u00E9ception du mauvais type de message
-packetQueuing = Mise en file d'attente de paquets
-packetQueuingInfo = TCP (Transmission Control Protocol) transf\u00E8re des donn\u00E9es de mani\u00E8re fiable entre deux\n h\u00F4tes Internet. Il d\u00E9tecte et r\u00E9cup\u00E8re automatiquement les erreurs et\n pertes. TCP utilise des tampons pour fournir cette fiabilit\u00E9. De plus,\n des commutateurs et routeurs utilisent des tampons pour g\u00E9rer les cas dans lesquels plusieurs liens\n d'entr\u00E9e envoient des paquets \u00E0 un seul lien de sortie ou lorsque la vitesse des liens est diff\u00E9rente\n (FastEthernet vers un modem DSL).\n\n Le serveur NDT g\u00E9n\u00E8re et envoie 10 secondes de donn\u00E9es au client. Dans\n certains cas le serveur peut produire des donn\u00E9es plus vite qu'il ne peut envoyer les paquets\n vers le r\u00E9seau (p.e., un CPU de 2 GHz \u00E9mettant vers un client connect\u00E9 en DSL).\n Quand cela arrive, certains paquets peuvent rester dans la file d'attente de sortie du serveur\n lorsque la minuterie de 10 secondes se termine. TCP continuera automatiquement \n d'envoyer ces paquets en file d'attente et le client continuera \u00E0 les accepter et\n \u00E0 g\u00E9rer ces paquets entrants. Ceci aura pour r\u00E9sultat que le test client\n dure plus longtemps que pr\u00E9vu.\n\n Cette condition s'est r\u00E9alis\u00E9e durant ce test. Aucune action n'est n\u00E9cessaire pour r\u00E9soudre ce probl\u00E8me.
-packetSizePreserved = La taille des paquets est pr\u00E9serv\u00E9e de bout-en-bout
-packetsize = La taille des paquets
-pc = PC
-pctOfTime = % du temps
-performedTests = Tests r\u00E9alis\u00E9s
-pktsRetrans = paquets retransmis
-possibleDuplexFullHalf = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
-possibleDuplexHalfFull = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-possibleDuplexHalfFullWarning = Attention: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-preferIPv6 = pr\u00E9f\u00E9rer IPv6
-printDetailedStats = Afficher les statistiques d\u00E9taill\u00E9es
-protocolError = Erreur de protocole! Attendait 'prepare', re\u00E7u: 0x
-qSeen = test de d\u00E9bit: Mise en file d'attente de paquets d\u00E9tect\u00E9e
-ready = Tcpbw100 pr\u00EAt
-receiveBufferShouldBe = Information: Le tampon de r\u00E9ception devrait \u00EAtre
-receiving = Reception des r\u00E9sultats...
-reportProblem = Rapporter un probl\u00E8me
-resultsParseError = Erreur lors du traitement des r\u00E9sultats!
-resultsTimeout = Attention! D\u00E9passement du d\u00E9lai client lors de la lecture des donn\u00E9es, il y a peut-\u00EAtre un probl\u00E8me de duplex mismatch
-resultsWrongMessage = R\u00E9sultat des tests: r\u00E9ception du mauvais type de message
-rtt = RTT
-rttFail = L'algorithme de d\u00E9tection du lien a \u00E9chou\u00E9 \u00E0 cause d'un temps d'aller-retour (RTT) trop important.
-runningInboundTest = ex\u00E9cution du test d'entr\u00E9e de 10 secondes (server-to-client [S2C]) . . . . . .
-runningOutboundTest = ex\u00E9cution du test de sortie de 10s (client-to-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: D\u00E9tection de mise en file d'attente de paquets
-s2cThroughput = d\u00E9bit S2C
-s2cThroughputFailed = Test de d\u00E9bit S2C \u00C9CHOU\u00C9!
-sackReceived = Blocs SACK re\u00E7us
-scalingFactors = Facteurs d'\u00E9chelle
-seconds = secondes
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Serveur
-serverAcksReport = les Acks du serveur rapportent que le lien est
-serverFault = Erreur du serveur: une erreur inconnue a eu lieu. Veuillez re-essayer plus tard.
-serverBusy = Serveur occup\u00E9: Trop de clients attendent dans la file d'attente du serveur. Veuillez re-essayer plus tard
-serverBusy15s = Serveur occup\u00E9: Veuillez attendre 15 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverBusy30s = Serveur occup\u00E9: Veuillez attendre 30 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverBusy60s = Serveur occup\u00E9: Veuillez attendre 60 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverDataReports = Les donn\u00E9es du serveur rapportent que le lien est
-serverFail = Erreur du serveur lors de la r\u00E9ception des donn\u00E9es
-serverIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
-serverIpPreserved = Les adresses IP du serveur sont conserv\u00E9es de bout en bout
-serverNotRunning = Processus serveur non actif: d\u00E9marrez le processus web100srv sur le serveur distant
-serverSays = Le serveur dit
-sfwFail = Le simple test firewall a \u00C9CHOU\u00C9!
-sfwSocketFail = Test simple du firewall: ne peut cr\u00E9er le socket d'\u00E9coute
-sfwTest = Test simple du firewall...
-sfwWrongMessage = Test simple du firewall : r\u00E9ception du mauvais type de message
-showOptions = Afficher les options
-simpleFirewall = Simple firewall
-sleep10m = En attente pour 10 minutes...
-sleep1m = En attente pour 1 minute...
-sleep30m = En attente pour 30 minutes...
-sleep5m = En attente pour 5 minutes...
-sleep12h = En attente pour 12 heures...
-sleep1d = En attente pour 1 jour...
-sleep2h = En attente pour 2 heures...
-start = D\u00C9MARRER
-startingTest = D\u00E9marrage du test
-statistics = Statistiques
-stop = ARRETER
-stopped = Les tests ont \u00E9t\u00E9 arr\u00EAt\u00E9s !
-stopping = Arr\u00EAt...
-systemFault = System Fault
-test = Test
-testsuiteWrongMessage = Negotiating test suite: r\u00E9ception du mauvais type de message
-theSlowestLink = Le lien le plus lent sur le chemin de bout en bout est un
-theoreticalLimit = La limite th\u00E9orique du r\u00E9seau est
-thisConnIs = Cette connexion est
-timesPktLoss = fois \u00E0 cause de la perte de paquets
-toMaximizeThroughput = kbytes pour maximiser le d\u00E9bit
-troubleReportFrom = Rapport d'incident de NDT sur
-unableToDetectBottleneck = Le serveur est incapable de d\u00E9terminer le type de lien du goulot d'\u00E9tranglement.
-unableToObtainIP = Impossible d'obtenir l'adresse IP locale
-unknownID = test ID inconnu
-unknownServer = Serveur inconnu
-unsupportedClient = Information: Le serveur n'accepte pas ce client en ligne de commande
-vendor = Vendeur
-version = Version
-versionWrongMessage = Negotiating NDT version: r\u00E9ception du mauvais type de message
-web100Details = Analyse d\u00E9taill\u00E9e Web100
-web100KernelVar = Variables du noyau Web100
-web100Stats = Statistiques activ\u00E9es Web100
-web100Var = Variables Web100
-web100rtt = Web100 rapporte le temps d'aller-retour (RTT)
-web100tcpOpts = Web100 rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
-web10gDetails = Analyse d\u00E9taill\u00E9e Web10G
-web10gKernelVar = Variables du noyau Web10G
-web10gStats = Statistiques activ\u00E9es WebB10G
-web10gVar = Variables Web10G
-web10grtt = Web10G rapporte le temps d'aller-retour (RTT)
-web10gtcpOpts = Web10G rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
-willImprove = am\u00E9liorera les performances
-workstation = Poste de travail
-your = Votre
-yourPcHas = Votre PC/Poste de travail a un
-connectingTo = Connexion \u00E0
-toRunTest = Pour d\u00E9marrer le test
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_nb_NO.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,231 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192-subnett
-10mbps = 10 Mbps Ethernet-subnett
-10mins = 10 mins
-12hours = 12 hours
-1day = 1 d\u00f8ygn
-1gbps = 1.0 Gbps Gigabit Ethernet-subnett
-1min = 1 min
-2.4gbps = 2.4 Gbps OC-48-subnett
-2hours = 2 timer
-30mins = 30 min
-45mbps = 45 Mbps T3/DS3-subnett
-5mins = 5 min
-622mbps = et 622 Mbps OC-12-subnett
-and = og
-architecture = Arkitektur
-bytes = byte
-c2s = K-T
-c2sPacketQueuingDetected = [K-T]: Pakkek\u00f8ing oppdaget
-c2sThroughput = K-T ytelse
-c2sThroughputFailed = K-T ytelsestest FEILET!
-cabledsl = Kabel/DSL-modem
-cablesNok = Advarsel: for mange nettverksfeil, sjekk kablene.
-cablesOk = Nettverkskablene er i orden.
-checkingFirewalls = Ser etter brannmurer . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Ser etter mellombokser . . . . . . . . . . . . . . . . .
-clickStart = Trykk START for \u00e5 starte testene.
-clickStart2 = Trykk START for \u00e5 teste en gang til.
-client = Klient
-client2 = Klienten
-clientAcksReport = basert p\u00e5 ack fra klienten ansl\u00e5s linken til
-clientDataReports = Basert p\u00e5 data fra klienten ansl\u00e5s linken til
-clientInfo = Opplysninger om klientmaskinen
-clientIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
-clientIpNotFound = IP-addressen til klientmaskinen ble ikke funnet
-clientIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
-clientSays = men klienten sier
-close = Lukk
-comments = Kommentarer
-congestNo = Overbelastning i nettet ikke funnet.
-congestYes = Til orientering: ytelsen er begrenset av annen trafikk i nettet.
-connIdle = Forbindelsen ventet
-connStalled = Forbindelsen hang
-connected = Koblet til:
-connectedTo = er koblet til et
-connectingTo = Kobler opp mot
-copy = Kopier
-defaultTests = Standardtester
-delayBetweenTests = Delay between tests
-detailedStats = Detaljer
-dialup = Oppringt modem
-dialup2 = oppringt
-done = Ferdig
-done2 = Tcpbw100 ferdig
-dupAcksIn = dupliserte ack ble mottatt
-duplexFullHalf = Alarm: Dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
-duplexHalfFull = Alarm: Dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-duplexNok = Alarm: Dupleksitetsfeil:
-duplexOk = Dupleksitet er i orden.
-endOfEmail = Slutt p\u00e5 epost
-excLoss = "H\u00f8yt pakketap begrenser ytelsen, kontroller automatisk konfigurering mellom din datamaskin og nettverkssvitsjen.
-excessiveErrors = Alarm: Alvorlige pakketap, sjekk nettverkskabler.
-firewallNo = er ikke bak brannmur. [Oppn\u00e5dde forbindelse med midlertidig port]
-firewallYes = er trolig bak en brannmur . [Oppn\u00e5dde ikke forbindelse med midlertidig port]
-flowControlLimits = Flytkontroll i nettet begrenser ytelsen til
-found100mbps = Link med 100 Mbit/s FastEthernet funnet.
-found10gbps = Link med 10 Gbit/s 10 GigEthernet/OC-192 funnet.
-found10mbps = Link med 10 Mbit/s Ethernet funnet.
-found1gbps = Link med 1 Gbit/s GigabitEthernet funnet.
-found2.4gbps = Link med 2.4 Gbit/s OC-48 funnet.
-found45mbps = Link med 45 Mbit/s T3/DS3 funnet.
-found622mbps = Link med 622 Mbit/s OC-12 funnet.
-foundDialup = Link med oppringt modem funnet.
-foundDsl = Link med kabelmodem/DSL/T1 funnet.
-fullDuplex = full dupleks "Fast Ethernet"-subnett
-general = Annet
-generatingReport = Genererer feilrapport; denne vil bli sendt til personen du spesifiserer
-getWeb100Var = Viser variabler fra Web100
-getWeb10gVar = Viser variabler fra Web10G
-halfDuplex = Halv-dupleks "Fast Ethernet"-subnett
-id = TCP/Web100/Web10G nettverksdiagnostikkverkt\u00f8y
-immediate = umiddelbart
-inboundTest = Tcpbw100 innkommende test...
-inboundWrongMessage = Klient-til-tjener-ytelsestest: mottok feil melding
-incompatibleVersion = Inkompatibelt versjonsnummer
-incrRxBuf = \u00c5 \u00f8ke klientmaskinens mottaksbuffer
-incrTxBuf = \u00c5 \u00f8ke tjenermaskinens sendebuffer
-information = Informasjon
-initialization = Initialiserer...
-insufficient = Ikke nok data til \u00e5 bestemme type link.
-invokingMailtoFunction = Tcpbw100 sender post
-ipProtocol = IP-protokoll
-ipcFail = Feil ved kommunikasjon mellom prosesser, type link ikke bestemt.
-javaData = Opplysninger om Java
-kbyteBufferLimits = kbyte som begrenser ytelsen til
-limitNet = begrenset av nettet
-limitRx = begrenset av mottakeren
-limitTx = begrenset av senderen
-linkFullDpx = Linken er i full dupleksmodus.
-linkHalfDpx = Linken er i halv dupleksmodus.
-loggingWrongMessage = Logging til tjener: Mottok feil type melding
-lookupError = Greide ikke sl\u00e5 opp tjenerens IP-addresse
-mboxWrongMessage = Mellombokstest: Mottok feil type melding
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Mellomboks
-middleboxFail = Tjenerfeil under mellombokstesting
-middleboxFail2 = Mellombokstest feilet!
-middleboxModifyingMss = Til orientering: En mellomboks i nettet forandrer valgt MSS
-middleboxTest = Tcpbw100 mellombokstest...
-moreDetails = Detaljer
-name = Navn
-ndtServerHas = NDT-tjeneren har en buffer p\u00e5
-noPktLoss1 = Intet pakketap
-noPktLoss2 = Intet pakketap
-numberOfTests = Antall tester
-of = av
-off = AV
-ok = OK
-oldDuplexMismatch = Advarsel: Gammel dupleksitetsfeil oppdaget:
-on = P\u00C5
-ooOrder = men pakker ankom i feil rekkef\u00f8lge
-options = Innstillinger
-osData = Operativsystem:
-otherClient = Tjeneren er for \u00f8yeblikket opptatt med en annen klient. Testen din vil begynne innen
-otherTraffic = Informasjon: Annen trafikk overbelaster linken
-outboundTest = Tcpbw100 utg\u00e5ende test...
-outboundWrongMessage = K-T ytelsestest: mottok feil type melding
-packetQueuing = Pakkek\u00f8ing
-packetQueuingInfo = TCP (Transmission Control Protocol) er en p\u00e5litelig nettverksprotokoll\n som overf\u00f8rer data mellom forskjellige maskiner. Den oppdager og motvirker\n automatisk feil og pakketap. TCP bruker buffere for \u00e5 oppn\u00e5 dette.\n I tillegg s\u00e5 har svitsjer og rutere buffere for \u00e5 h\u00e5ndtere tilfeller\n hvor mange maskiner sender til samme port, eller hvor hastigheter\n endres (for eksempel "Fast Ethernet" eller et DSL-modem).\n \n NDT-tjeneren genererer og sender 10 sekunder med data til klienten.\n I noen tilfeller genererer tjeneren data kjappere enn den klarer \u00e5\n sende ut pakker til nettverket (for eksempel en tjener med 2GHz CPU\n som sender til en klient koblet til via DSL). N\u00e5r dette skjer, hender\n det at det er igjen pakker i pakkek\u00f8en n\u00e5r de 10 sekundene har passert.\n TCP vil automatisk fors\u00f8ke \u00e5 sende disse pakkene, selv om tiden er ute,\n og klienten vil fortsette \u00e5 motta de. Dette vil f\u00f8re til at klienttesten\n kan kj\u00f8re litt lenger enn forventet.\n \n Dette hendte under kj\u00f8ringen av denne testen. Du trenger ikke gj\u00f8re noe\n for \u00e5 fikse dette.
-packetSizePreserved = Pakkest\u00f8rrelse blir bevart fra ende til ende
-packetsize = pakkkest\u00f8rrelse
-pc = Personlig datamaskin
-pctOfTime = % av tiden
-performedTests = Tester \u00e5 utf\u00f8re
-pktsRetrans = pakker ble retransmittert
-possibleDuplexFullHalf = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
-possibleDuplexHalfFull = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-possibleDuplexHalfFullWarning = Advarsel: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-preferIPv6 = bruk IPv6 hvis mulig
-printDetailedStats = Viser detaljer
-protocolError = Protokollfeil! Mottok: 0x
-qSeen = ytelsestest: Pakkek\u00f8ing oppdaget
-ready = Tcpbw100 klar
-receiveBufferShouldBe = Informasjon: Mottaksbufferen burde v\u00e6re
-receiving = Henter resultater...
-reportProblem = Meld fra om problemer
-resultsParseError = Feil under tolkingen av testresultater!
-resultsTimeout = Advarsel! Tidsavbrudd under henting av data, mulig dupleksitetsfeil
-resultsWrongMessage = Testresultater: Mottok feil type melding
-rtt = rundreisetid
-rttFail = For lang rundreisetid til \u00e5 bestemme type link.
-runningInboundTest = Kj\u00f8rer 10 sekunders innkommende test (tjener-til-klient [T-K]) . . . .
-runningOutboundTest = Kj\u00f8rer 10 sekunders utg\u00e5ende test (klient-til-tjener [K-T]) . . . . . . .
-s2c = T-K
-s2cPacketQueuingDetected = [T-K]: Pakkek\u00f8ing oppdaget
-s2cThroughput = Ytelse tjener-klient
-s2cThroughputFailed = Ytelsestest fra tjener til klient FEILET!
-sackReceived = SACK-blokker ble mottatt.
-scalingFactors = Skaleringsfaktorer
-seconds = sekunder
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Tjener
-serverAcksReport = basert p\u00e5 ack fra tjeneren ansl\u00e5s linken til
-serverFault = Tjener Forkastningen; Ukjente forkastningen oppstod. Du kan pr\u00f8ve senere
-serverBusy = Tjener opptatt; For mange klienter i k\u00f8. Du kan pr\u00f8ve senere
-serverBusy15s = Tjener opptatt; vennligst vent 15 sekunder mens forrige test kj\u00f8res ferdig
-serverBusy30s = Tjener opptatt; vennligst vent 30 sekunder mens forrige test kj\u00f8res ferdig
-serverBusy60s = Tjener opptatt; vennligst vent 60 sekunder mens forrige test kj\u00f8res ferdig
-serverDataReports = Basert p\u00e5 data fra tjeneren ansl\u00e5s linken til
-serverFail = Tjenerfeil under mottak av data
-serverIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
-serverIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
-serverNotRunning = Tjenerprosess kj\u00f8rer ikke; vennligst start "web100srv" p\u00e5 tjeneren.
-serverSays = Tjeneren sier
-sfwFail = Enkel brannmurtest FEILET!
-sfwSocketFail = Enkel brannmurtest: Kan ikke opprette lytteport
-sfwTest = Enkel brannmurtest...
-sfwWrongMessage = Enkel brannmurtest: Mottok feil type melding
-showOptions = Vis innstillinger
-simpleFirewall = Enkel brannmur
-sleep10m = Venter 10 minutter...
-sleep12h = Venter 12 timer...
-sleep1d = Venter ett d\u00f8gn...
-sleep1m = Venter ett minutt...
-sleep2h = Venter to timer...
-sleep30m = Venter 30 minutter...
-sleep5m = Venter fem minutter...
-start = START
-startingTest = Starter test
-statistics = Statistikk
-stop = STOPP
-stopped = Testene ble stoppet!
-stopping = Stopper...
-systemFault = systemfeil
-test = Test
-testsuiteWrongMessage = Avtaler tester: Mottok feil type melding
-theSlowestLink = Den tregeste linken i stien mellom din maskin og tjeneren er et
-theoreticalLimit = Teoretisk grense for nettet er
-thisConnIs = Denne forbindelsen er
-timesPktLoss = ganger p\u00e5 grunn av pakketap
-toMaximizeThroughput = kilobyte for \u00e5 maksimere ytelsen
-toRunTest = for \u00e5 teste
-troubleReportFrom = Feilrapport fra NDT p\u00e5
-unableToDetectBottleneck = Tjeneren greide ikke \u00e5 bestemme flaskehalsen i stien
-unableToObtainIP = Kunne ikke f\u00e5 tak i den lokale IP-addressen
-unknownID = Ukjent test-ID
-unknownServer = Ukjent tjener
-unsupportedClient = Informasjon: Tjeneren st\u00f8tter ikke denne kommandolinjeklienten
-usingIpv4 = -- Bruker IPv4-addresse
-usingIpv6 = -- Bruker IPv6-addresse
-vendor = Leverand\u00f8r
-version = Versjon
-versionWrongMessage = Avtaler NDT-versjon: Mottok feil type melding
-web100Details = Detaljerte opplysninger fra Web100
-web100KernelVar = Kjernevariabler fra Web100
-web100Stats = Statistikk fra Web100
-web100Var = Variabler fra Web100
-web100rtt = Web100 melder at rundreisetid
-web100tcpOpts = Web100 melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
-web10gDetails = Detaljerte opplysninger fra Web10G
-web10gKernelVar = Kjernevariabler fra Web10G
-web10gStats = Statistikk fra Web10G
-web10gVar = Variabler fra Web10G
-web10grtt = Web10G melder at rundreisetid
-web10gtcpOpts = Web10G melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
-willImprove = vil forbedre ytelsen
-workstation = Arbeidsstasjon
-your = Din
-yourPcHas = Datamaskinen din har en buffer p\u00e5
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_nl_NL.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,231 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
-10mbps = 10 Mbps Ethernet subnet
-10mins = 10 minutes
-12hours = 12 uren
-1day = 1 dag
-1gbps = 1.0 Gbps Gigabit Ethernet subnet
-1min = 1 minuut
-2.4gbps = 2.4 Gbps OC-48 subnet
-2hours = 2 uren
-30mins = 30 minuten
-45mbps = 45 Mbps T3/DS3 subnet
-5mins = 5 minuten
-622mbps = a 622 Mbps OC-12 subnet
-and = en
-architecture = Architectuur
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Packet queueing detected
-c2sThroughput = C2S doorvoer
-c2sThroughputFailed = C2S doorvoer test MISLUKT!
-cabledsl = Kabel/DSL modem
-cablesNok = Melding: erg veel netwerk errors, controleer de netwerk kabels
-cablesOk = Goede netwerk kabel(s) gevonden
-checkingFirewalls = Zoeken naar firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Zoeken naar tussenliggende routers . . . . . . . . . . . . . . . . . .
-clickStart = Klik START om de test te beginnen
-clickStart2 = Klik START om opnieuw te testen
-client = Client
-client2 = Client
-clientAcksReport = Client Acks zegt dat link is
-clientDataReports = Client Data zegt dat link is
-clientInfo = Client Systeem Details
-clientIpModified = Informatie: Network Address Translation (NAT) Uw router verandert het IP adres
-clientIpNotFound = Client IP adres niet gevonden. Voor IE gebruikers, verander de Java parameters\n Klik Tools - Internet Options - Security - Custom Level, scroll naar\n Microsoft VM - Java permissions en klik Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, klik Enable en sla uw wijzigingen op
-clientIpPreserved = Server IP adressen zijn beveiligd End-to-End
-clientSays = maar Client zegt
-close = Sluiten
-comments = Commentaar
-congestNo = Geen netwerk overgebruik ontdekt.
-congestYes = Informatie: doorvoer is gelimiteerd door ander netwerk verkeer.
-connIdle = De connectie was idle
-connStalled = De connectie is vastgelopen
-connected = Verbonden met:
-connectedTo = is verbonden met een
-copy = Kopie
-defaultTests = Standaard tests
-delayBetweenTests = vertraging tussen tests
-detailedStats = Gedetailleerde Statistieken
-dialup = Inbel Modem
-dialup2 = Inbel
-done = Klaar.
-done2 = Tcpbw100 klaar
-dupAcksIn = meerdere dezelfde acks ontvangen
-duplexFullHalf = Alarm: Duplex Mismatch conditie gedetecteerd Switch=full en Host=half
-duplexHalfFull = Alarm: Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-duplexNok = Melding: Oude Duplex mismatch conditie gedetecteerd:
-duplexOk = Normale duplex instellingen gevonden.
-endOfEmail = Einde Van Email Bericht
-excLoss = Excessieve verloren pakketten zorgen voor een slechtere doorvoer, controleer de auto-negotiate functie op uw PC en de netwerk switch
-excessiveErrors = Alarm: Excessieve errors, controleer netwerk kabel(s).
-firewallNo = is niet achter een firewall. [Connectie naar de directe poort was succesvol]
-firewallYes = is waarschijnlijk achter een firewall. [Connectie naar de directe poort mislukt]
-flowControlLimits = Het network based flow control limiteerd de doorvoer tot
-found100mbps = 100 Mbps FastEthernet link gevonden.
-found10gbps = 10 Gbps 10 GigEthernet/OC-192 link gevonden.
-found10mbps = 10 Mbps Ethernet link gevonden.
-found1gbps = 1 Gbps GigabitEthernet link gevonden.
-found2.4gbps = 2.4 Gbps OC-48 link gevonden.
-found45mbps = 45 Mbps T3/DS3 link gevonden.
-found622mbps = 622 Mbps OC-12 link gevonden.
-foundDialup = Inbel modem link gevonden.
-foundDsl = Kabel modem/DSL/T1 link gevonden.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = normaal
-generatingReport = Probleem Rapport Genereren: Dit rapport wordt gemaild naar de persoon die u opgeeft
-getWeb100Var = Vraag Web100 Variabelen op
-getWeb10gVar = Vraag Web10G Variabelen op
-halfDuplex = Half duplex Fast Ethernet subnet
-id = TCP/Web100/Web10G Network Diagnostic Tool
-immediate = direct
-inboundTest = Tcpbw100 inkomende test...
-inboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
-incompatibleVersion = Incompatibel versie nummer
-incrRxBuf = Verhogen van de client´s recieve buffer
-incrTxBuf = Verhogen van de server´s send buffer
-information = Informatie
-initialization = Initialisatie...
-insufficient = Niet genoeg data verzameld om link type te bepalen.
-invokingMailtoFunction = Tcpbw100 Mailto functie uitvoeren
-ipProtocol = IP protocol
-ipcFail = Inter-proces communicatie mislukt, onbekend link type.
-usingIpv4 = -- Maakt gebruik van IPv4 adres
-usingIpv6 = -- Maakt gebruik van IPv6 adres
-javaData = Java data
-kbyteBufferLimits = KByte buffer, dit limiteerd de doorvoer tot
-limitNet = netwerk gelimiteerd
-limitRx = ontvanger gelimiteerd
-limitTx = zender gelimiteerd
-linkFullDpx = Link aangepast naar Full Duplex mode
-linkHalfDpx = Link aangepast naar Half Duplex mode
-loggingWrongMessage = Loggen naar server: Verkeerd type bericht ontvangen
-lookupError = Kan geen remote IP adres verkrijgen
-mboxWrongMessage = Middlebox test: Verkeerd type bericht ontvangen
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = Server heeft gefaald while middlebox testing
-middleboxFail2 = Middlebox test MISLUKT!
-middleboxModifyingMss = Informatie: Netwerk Middlebox verandert MSS variabele
-middleboxTest = Tcpbw100 Middlebox test...
-moreDetails = Meer Details...
-name = Naam
-ndtServerHas = De NDT server heeft een
-noPktLoss1 = Geen verloren packets
-noPktLoss2 = Er zijn geen verloren packets geconstateerd
-numberOfTests = Aantal tests
-of = van
-off = OFF
-ok = OK
-oldDuplexMismatch = "Melding: Oude Duplex mismatch conditie gedetecteerd: "
-on = ON
-ooOrder = maar packets kwamen in de verkeerde volgorde aan
-options = Opties
-osData = OS data:
-otherClient = Op dit moment wordt een andere client geholpen, uw test begint zo spoedig mogelijk
-otherTraffic = Informatie: Ander netwerk verkeer vertraagd de connectie
-outboundTest = Tcpbw100 uitgaande test...
-outboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
-packetQueuing = Pakket queuing
-packetQueuingInfo = TCP (Transmission Control Protocol) verstuurd betrouwbaar tussen twee\n Internet hosts. Het detecteerd en hersteld error en verliezen.\n TCP gebruikt buffers om deze betrouwbaarheid te verzorgen. Daarnaast,\n hebben switches en routers ook buffers om situaties waarbij meerdere\n links pakketten versturen naar een enkele uitgaande poort of wanneer\n de link snelheid veranderd (FastEthernet naar DSL modem).\n\n De NDT server genereerd en verstuurd 10 seconden data naar de client. In\n sommige gevallen genereerd de server sneller pakketten dan er verstuurd\n kan worden naar het netwerk (bijv., een 2 GHz CPU naar een DSL link).\n Wanneer dit gebeurt, blijven sommige pakketten hangen in de server queue\n wanneer de 10 seconden timeout optreedt. TCP zal automatisch doorgaan\n met het verzenden van deze pakketten en de client zal deze ook blijven accepteren\n en behandelen. Dit kan ervoor zorgen dat de client test langer duurt dan gepland.\n\n Deze situatie heeft zich voorgedaan tijdens deze test. U hoeft geen actie te\n ondernemen om dit probleem op te lossen.\n
-packetSizePreserved = Pakket grootte is bewaard gebleven End-to-End
-packetsize = de Pakket grootte
-pc = PC
-pctOfTime = % van de tijd
-performedTests = Uitgevoerde tests
-pktsRetrans = pakketten opnieuw verstuurd
-possibleDuplexFullHalf = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=Full en Host=half
-possibleDuplexHalfFull = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-possibleDuplexHalfFullWarning = Warning: Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-preferIPv6 = prefereer IPv6
-printDetailedStats = Print Gedetaileerde Statistieken
-protocolError = Protocol error! Verwachtte 'prepare', maar kreeg: 0x
-qSeen = doorvoer test: Pakket queuing gedetecteerd
-ready = Tcpbw100 klaar voor gebruik
-receiveBufferShouldBe = Informatie: The ontvangst buffer zou moeten zijn
-receiving = Resultaten ontvangen...
-reportProblem = Rapporteer een probleem
-resultsParseError = Error bij het parsen van de test resultaten!
-resultsTimeout = Melding! Client time-out tijden het lezen van de data, mogelijk duplex mismatch is aanwezig
-resultsWrongMessage = Test resultaten: Verkeerd type bricht ontvangen
-rtt = RTT
-rttFail = Link detectie algorithme mislukt vanwege excessieve Round Trip Times.
-runningInboundTest = uitvoeren 10s inkomende test (server-naar-client [S2C]) . . . . . .
-runningOutboundTest = uitvoeren 10s uitgaande test (client-naar-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Pakket queueing gedetecteerd
-s2cThroughput = S2C doorvoer
-s2cThroughputFailed = S2C tdoorvoer test MISLUKT!
-sackReceived = SACK blocks ontvangen
-scalingFactors = Scaling Factoren
-seconds = seconden
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Server
-serverAcksReport = Server Acks zegt dat link is
-serverFault = De Fout van de server: de onbekende fout kwam voor. Gelieve te proberen opnieuw later
-serverBusy = Server Bezig: Teveel clients wachtende in queue. Probeer het later nog eens
-serverBusy15s = Server Bezig: Wacht alstublieft 15 seconden om de vorige test af te ronden
-serverBusy30s = Server Bezig: Wacht alstublieft 30 seconden om de vorige test af te ronden
-serverBusy60s = Server Bezig: Wacht alstublieft 60 seconden om de vorige test af te ronden
-serverDataReports = Server Data zegt dat link is
-serverFail = Server fout tijdens het ontvangen van data
-serverIpModified = Informatie: Network Address Translation (NAT) box verandert het IP adres van de client
-serverIpPreserved = Server IP adressen worden behouden End-to-End
-serverNotRunning = Server proces draait niet: start het web100srv proces op de server
-serverSays = Server zegt
-sfwFail = Simpele firewall test MISLUKT!
-sfwSocketFail = Simpele firewall test: Kan geen listen socket aanmaken
-sfwTest = Simpele firewall test...
-sfwWrongMessage = Simpele firewall test: Verkeerd bericht ontvangen
-showOptions = Toon opties
-simpleFirewall = Simpele firewall
-sleep10m = Slapen voor 10 minuten...
-sleep1m = Slapen voor 1 minuut...
-sleep30m = Slapen voor 30 minuten...
-sleep5m = Slapen voor 5 minuten...
-sleep12h = Slapen voor 12 uren...
-sleep1d = Slapen voor 1 dag...
-sleep2h = Slapen voor 2 uren...
-start = START
-startingTest = Starten test
-statistics = Statistieken
-stop = STOP
-stopped = De tests zijn gestopt!
-stopping = Stoppen...
-systemFault = Systeem Fout
-test = Test
-testsuiteWrongMessage = Overleggen test suite: Verkeerd type bericht ontvangen
-theSlowestLink = De traagste link in het end-to-end pad is een
-theoreticalLimit = De theoretische netwerk limiet is
-thisConnIs = Deze connectie is
-timesPktLoss = keren vanwege packet loss
-toMaximizeThroughput = kbytes om doorvoer te maximaliseren
-troubleReportFrom = Probleem Rapport van NDT op
-unableToDetectBottleneck = Server kan de bottleneck link niet bepalen.
-unableToObtainIP = Kan lokaal IP adres niet achterhalen
-unknownID = Onbekend test ID
-unknownServer = Onbekende server
-unsupportedClient = Informatie: De server ondersteund deze command line client niet
-vendor = Bedrijf
-version = Versie
-versionWrongMessage = Overleggen NDT versie: Verkeerd type bericht ontvangen
-web100Details = Web100 gedetaileerde Analyze
-web100KernelVar = Web100 Kernel Variabelen
-web100Stats = Web100 Enabled Statistieken
-web100Var = Web100 Variabelen
-web100rtt = Web100 rapporteerd de Round trip time
-web100tcpOpts = Web100 heeft voor TCP de volgende optionele settings overlegd:
-web10gDetails = Web10G gedetaileerde Analyze
-web10gKernelVar = Web10G Kernel Variabelen
-web10gStats = Web10G Enabled Statistieken
-web10gVar = Web10G Variabelen
-web10grtt = Web10G rapporteerd de Round trip time
-web10gtcpOpts = Web10G heeft voor TCP de volgende optionele settings overlegd:
-willImprove = zal de performance verbeteren
-workstation = Werkstation
-your = Uw
-yourPcHas = Uw PC/Werkstation heeft een
-connectingTo = Connecten naar
-toRunTest = start test
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_pt_BR.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,230 +0,0 @@
-10gbps = sub-rede Gigabit Ethernet/OC-192 de 10 Gbps (10 Gbps 10 Gigabit Ethernet/OC-192 subnet)
-10mbps = sub-rede Ethernet de 10 Mbps (10 Mbps Ethernet subnet)
-10mins = 10 min
-12hours = 12 horas
-1day = 1 dia
-1gbps = sub-rede Gigabit Ethernet de 1.0 Gbps (1.0 Gbps Gigabit Ethernet subnet)
-1min = 1 min
-2.4gbps = sub-rede OC-48 de 2.4 Gbps ( 2.4 GbpsOC-48 subnet)
-2hours = 2 horas
-30mins = 30 min
-45mbps = sub-rede T3/DS3 de 45 Mbps (45 Mbps T3/DS3 subnet)
-5mins = 5 min
-622mbps = uma sub-rede OC-12 de 622 Mbps ( a 622 Mbps OC-12 subnet)
-and = e
-architecture = Arquitetura
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Fila de pacotes detectada
-c2sThroughput = C2S taxa de transfer\u00EAncia
-c2sThroughputFailed = C2S teste de taxa de transfer\u00EAncia FALHOU!
-cabledsl = Cabo/ modem DSL
-cablesNok = Aviso: excessivos erros de rede detectados, verifique o(s) cabo(s) de rede
-cablesOk = Encontrado(s) cabo(s) de rede adequados
-checkingFirewalls = Procurando por firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Procurando por Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Clique em INICIAR para iniciar o teste
-clickStart2 = Clique em INICIAR para executar o teste novamente
-client = Cliente
-client2 = Cliente
-clientAcksReport = Cliente Acks reporta que o link \u00E9
-clientDataReports = Dados do Cliente reporta que o link \u00E9
-clientInfo = Detalhes do Sistema do Cliente
-clientIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
-clientIpNotFound = Endere\u00E7o IP do Cliente n\u00E3o encontrado. Para usu\u00E1rios do IE, altere os par\u00E2metros do Java\n clique em Ferramentas - Op\u00E7\u00F5es da Internet - Seguran\u00E7a - N\u00EDvel personalizado, role para baixo at\u00E9 Microsoft VM - Permiss\u00F5es Java e clique em Customizar, clique Customizar configura\u00E7\u00F5es do Java\n Edite as Permiss\u00F5es - Acesse todos Endere\u00E7os de Rede, clique em habilitar e salve as altera\u00E7\u00F5es
-clientIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
-clientSays = mas o Cliente diz
-close = Fechar
-comments = Comment\u00E1rios
-congestNo = Congestionamento da rede n\u00E3o foi detectado
-congestYes = Informa\u00E7\u00E3o: taxa de transfer\u00EAncia \u00E9 limitada devido a outro tr\u00E1fego de rede.
-connIdle = A conex\u00E3o estava ociosa em
-connStalled = A conex\u00E3o foi interrompida
-connected = Conectado a:
-connectedTo = est\u00E1 conectado a um(a)
-copy = Copiar
-defaultTests = Testes padr\u00E3o
-delayBetweenTests = Atraso entre os testes
-detailedStats = Estat\u00EDsticas detalhadas
-dialup = Modem Dial-up
-dialup2 = Discada
-done = Conclu\u00EDdo
-done2 = Tcpbw100 conclu\u00EDdo.
-dupAcksIn = acks duplicados recebidos
-duplexFullHalf = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
-duplexHalfFull = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-duplexNok = Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:
-duplexOk = Dupla opera\u00E7\u00E3o normal encontrada.
-endOfEmail = Final da mensagem de E-mail
-excLoss = Excessiva perda de pacotes est\u00E1 impactando na sua performance, cheque a fun\u00E7\u00E3o auto-negotiate no seu computador local e no switch da rede
-excessiveErrors = Alerta: Erros excessivos, verifique o(s) cabo(s) de rede.
-firewallNo = n\u00E3o protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera conclu\u00EDda com \u00EAxito]
-firewallYes = provavelmente protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera falhou]
-flowControlLimits = O controle de fluxo da rede limita a taxa de transfer\u00EAncia em
-found100mbps = link de 100 Mbps FastEthernet encontrado.
-found10gbps = link de 10 Gbps 10 GigEthernet/OC-192 encontrado.
-found10mbps = link de 10 Mbps Ethernet encontrado.
-found1gbps = link de 1 Gbps GigabitEthernet encontrado.
-found2.4gbps = link de 2.4 Gbps OC-48 encontrado.
-found45mbps = link de 45 Mbps T3/DS3 encontrado.
-found622mbps = link de 622 Mbps OC-12 encontrado.
-foundDialup = link de Dial-up modem encontrado.
-foundDsl = link de modem a cabo/DSL/T1 encontrado.
-fullDuplex = sub-rede Full duplex Fast Ethernet
-general = Geral
-generatingReport = Gerando Relat\u00F3rio de Problemas: Esse relat\u00F3rio ser\u00E1 enviado por email para a pessoa que voc\u00EA especificar
-getWeb100Var = Buscar vari\u00E1veis Web100
-getWeb10gVar = Buscar vari\u00E1veis Web10G
-halfDuplex = sub-rede Half duplex Fast Ethernet
-id = TCP/Web100/Web10G Ferramenta de Diagn\u00F3stico da Rede
-immediate = imediato
-inboundTest = Tcpbw100 teste de entrada inbound test...
-inboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
-incompatibleVersion = N\u00FAmero da vers\u00E3o incompat\u00EDvel
-incrRxBuf = Aumentando o buffer de recep\u00E7\u00E3o do cliente
-incrTxBuf = Aumentando o buffer de envio do servidor NDT
-information = Informa\u00E7\u00E3o
-initialization = Inicializa\u00E7\u00E3o...
-insufficient = Dados coletados s\u00E3o insuficientes para determinar tipo de link.
-invokingMailtoFunction = Tcpbw100 Chamando fun\u00E7\u00E3o Mailto
-ipProtocol = Protocolo IP
-ipcFail = Comunica\u00E7\u00F5es entre processos falhou, tipo de link desconhecido.
-usingIpv4 = -- Usando endere\u00E7o IPv4
-usingIpv6 = -- Usando endere\u00E7o IPv6
-javaData = Dados Java
-kbyteBufferLimits = KByte buffer que limita a taxa de transfer\u00EAncia para
-limitNet = limitada pela rede em
-limitRx = destinat\u00E1rio limitado
-limitTx = remetende limitado
-linkFullDpx = Link definido/configurado para modo Full Duplex
-linkHalfDpx = Link definido/configurado para modo Half Duplex
-loggingWrongMessage = Logando ao servidor: Tipo errado de mensagem foi recebido
-lookupError = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP remoto
-mboxWrongMessage = Teste Middlebox : Tipo errado de mensagem foi recebido
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = Servidor falhou durante o teste de middlebox
-middleboxFail2 = Teste Middlebox FALHOU!
-middleboxModifyingMss = Informa\u00E7\u00E3o: Middlebox da Rede est\u00E1 modificando a vari\u00E1vel MSS
-middleboxTest = Tcpbw100 teste Middlebox ...
-moreDetails = Mais Detalhes...
-name = Nome
-ndtServerHas = O servidor NDT possui um
-noPktLoss1 = Perda de pacotes n\u00E3o
-noPktLoss2 = N\u00E3o foi observada perda de pacotes
-numberOfTests = N\u00FAmero de testes
-of = de
-off = DESLIGADO
-ok = OK
-oldDuplexMismatch = "Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:"
-on = LIGADO
-ooOrder = mas os pacotes fotam recebidos fora da ordem
-options = Op\u00E7\u00F5es
-osData = Dados do SO:
-otherClient = Outro cliente est\u00E1 sendo servido, seu teste ter\u00E1 in\u00EDcio em
-otherTraffic = Informa\u00E7\u00E3o: Tr\u00E1fego de outras redes est\u00E1 congestionando o link
-outboundTest = Tcpbw100 teste de sa\u00EDda...
-outboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
-packetQueuing = Filas de Pacotes
-packetQueuingInfo = TCP (Protocolo de Controle de Transmiss\u00E3o) transfere dados de forma confi\u00E1vel entre dois\n hosts. Ele automaticamente detecta e recupera de erros\ n e perdas. O TCP usa buffers para prover essa confiabilidade. Al\u00E9m disso, switches e roteadores usam buffers para lidar/gerenciar casos em que v\u00E1rios links enviam pacotes para uma \u00FAnica sa\u00EDda ou a velocuidade do link muda\n (Ethernet R\u00E1pida para modem DSL.\n\n O servidor NDT gera e envia 10 segundos de dados para o cliente. Em\n alguns casos o servidor pode gerar dados mais r\u00E1pido do que enviar pacotes para a rede (ex: um CPU de 2GHz enviando para um cliente conectado a um DSL).\n Quando isso ocorre, alguns pacotes podem ficar enfileiirados na sa\u00EDda do servidor\n quando \u00E9 expirado o tempo de 10 segundos. O TCP automaticamente continuar\u00E1 a enviar esses pacotes enfileirados e o cliente vai continuar aceitando e processando esses pacotes. Isso resulta em um maior tempo de execu\u00E7\u00E3o do teste do cliente. Essa situa\u00E7\u00E3o ocorreu durante esse teste. Nenhuma a\u00E7\u00E3o \u00E9 requerida para\n resolver esse problema.
-packetSizePreserved = O Tamanho do Pacote \u00E9 preservado Fim a Fim
-packetsize = o tamanho do Pacote
-pc = PC
-pctOfTime = % do tempo
-performedTests = Testes executados
-pktsRetrans = pacotes retransmitidos
-possibleDuplexFullHalf = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
-possibleDuplexHalfFull = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-possibleDuplexHalfFullWarning = Aviso: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-preferIPv6 = prefira IPv6
-printDetailedStats = Imprima as Estat\u00EDsticas Detalhadas
-protocolError = Erro de Protocolo! Esperado 'prepare', obtido: 0x
-qSeen = teste de taxa de transfer\u00EAncia: Enfileiramento de pacotes detectado
-ready = Tcpbw100 pronto
-receiveBufferShouldBe = Informa\u00E7\u00E3o: O buffer de recep\u00E7\u00E3o deve ser
-receiving = Recebendo resultados...
-reportProblem = Reportar problema
-resultsParseError = Erro ao analisar os resultados do teste!
-resultsTimeout = Aviso! Tempo do cliente expirou ao ler os dados, poss\u00EDvel exist\u00EAncia de uma dupla condi\u00E7\u00E3o de incompatibilidade
-resultsWrongMessage = Resultados dos Testes: Tipos errados de mensagem foram recebidos
-rtt = RTT
-rttFail = Algor\u00EDtmo de detec\u00E7\u00E3o do link falhou devido a excessivos
-runningInboundTest = executando teste de entrada de 10s (servidor para cliente [S2C]) . . . . . .
-runningOutboundTest = executando teste de sa\u00EDda de 10s (cliente para servidor [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Enfileiramento de pacotes detectados
-s2cThroughput = S2C taxa de transfer\u00EAncia
-s2cThroughputFailed = S2C teste de taxa de transfer\u00EAncia FALHOU!
-sackReceived = Blocos SACK recebidos
-scalingFactors = Fatores de Escala/escalonamento
-seconds = segundos
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = Servidor
-serverAcksReport = Servidor Acks reporta que o link \u00E9
-serverBusy = Servidor Ocupado: Muitos clientes aguardando na fila do servidor. Por favor, tente novamente mais tarde.
-serverBusy15s = Servidor Ocupado: Por favor, aguarde 15 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverBusy30s = Servidor Ocupado: Por favor, aguarde 30 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverBusy60s = Servidor Ocupado: Por favor, aguarde 60 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverDataReports = Dados do servidor reporta que o link \u00E9
-serverFail = Servidor falhou enquanto recebia dados
-serverIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
-serverIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
-serverNotRunning = Processo do servidor n\u00E3o est\u00E1 executando : inicie o processo web100srv no servidor remoto
-serverSays = Servidor diz
-sfwFail = Teste simples de firewall FALHOU!
-sfwSocketFail = Teste simples de firewall: N\u00E3o pode ser criado socket para escuta
-sfwTest = Teste simples de firewall...
-sfwWrongMessage = Teste simples de firewall: Tipos errados de mensagem foram recebidos
-showOptions = Mostrar op\u00E7\u00F5es
-simpleFirewall = Firewall simples
-sleep10m = Dormindo por 10 min...
-sleep1m = Dormindo por 1 min...
-sleep30m = Dormindo por 30 min...
-sleep5m = Dormindo por 5 min...
-sleep12h = Dormindo por 12 horas...
-sleep1d = Dormindo por 1 dia...
-sleep2h = Dormindo por 2 horas...
-start = INICIAR
-startingTest = Iniciando Teste
-statistics = Estat\u00EDsticas
-stop = PARAR
-stopped = Os testes foram interrompidos!
-stopping = Parando...
-systemFault = Falha do Sistema
-test = Teste
-testsuiteWrongMessage = Negotiating test suite: Tipos errados de mensagem foram recebidos
-theSlowestLink = O link mais lento no caminho fim a fim \u00E9
-theoreticalLimit = O limite te\u00F3rico da rede \u00E9
-thisConnIs = A conex\u00E3o est\u00E1
-timesPktLoss = vezes devido a perda de pacotes
-toMaximizeThroughput = kbytes para maximizar a taxa de transfer\u00EAncia
-troubleReportFrom = Trouble Report from NDT on
-unableToDetectBottleneck = Servidor n\u00E3o conseguiu determinar o tipo de gargalo.
-unableToObtainIP = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP local
-unknownID = ID de teste desconhecido
-unknownServer = Servidor desconhecido
-unsupportedClient = Informa\u00E7\u00E3o: Esse servidor n\u00E3o fornece suporte a essa linha de comando
-vendor = Fabricante
-version = Vers\u00E3o
-versionWrongMessage = Negociando vers\u00E3o do NDT : Tipo errado de mensagem foi recebido
-web100Details = An\u00E1lise detalhada Web100
-web100KernelVar = Vari\u00E1veis do Kernel Web100
-web100Stats = Estat\u00EDsticas Web100 dispon\u00EDveis
-web100Var = Vari\u00E1veis Web100
-web100rtt = Web100 reporta o tempo de Ida e Volta
-web100tcpOpts = Web100 verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
-web10gDetails = An\u00E1lise detalhada Web10G
-web10gKernelVar = Vari\u00E1veis do Kernel Web10G
-web10gStats = Estat\u00EDsticas Web10G dispon\u00EDveis
-web10gVar = Vari\u00E1veis Web10G
-web10grtt = Web10G reporta o tempo de Ida e Volta
-web10gtcpOpts = Web10G verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
-willImprove = ir\u00E1 melhorar a performance
-workstation = Esta\u00E7\u00E3o de trabalho
-your = Sua
-yourPcHas = Seu PC/Esta\u00E7\u00E3o de Trabalho tem um
-connectingTo = Conectando a
-toRunTest = para executar o teste
=======================================
--- /branches/AppletIssue92/Applet/Tcpbw100_msgs_ru_RU.properties Mon Oct 14 13:20:21 2013 UTC
+++ /dev/null
@@ -1,230 +0,0 @@
-10gbps = 10 \u0413\u0431\u0438\u0442/\u0441\u0435\u043A 10 Gigabit Ethernet/OC-192 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-10mbps = 10 \u041C\u0431\u0438\u0442/\u0441\u0435\u043A Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-10mins = 10 \u043C\u0438\u043D\u0443\u0442
-12hours = 12 \u0447\u0430\u0441\u043E\u0432
-1day = 1 \u0434\u0435\u043D\u044C
-1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 Gigabit Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-1min = 1 \u043C\u0438\u043D
-2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-2hours = 2 \u0447\u0430\u0441\u0430
-30mins = 30 \u043C\u0438\u043D\u0443\u0442
-45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-5mins = 5 \u043C\u0438\u043D\u0443\u0442
-622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-and = \u0438
-architecture = \u0410\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430
-bytes = \u0431\u0430\u0439\u0442
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-c2sThroughput = C2S \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043Da\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-c2sThroughputFailed = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B !
-cabledsl = \u043A\u0430\u0431\u0435\u043B\u044C\u043D\u044B\u0439 \u043C\u043E\u0434\u0435\u043C
-cablesNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C
-cablesOk = \u0421\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C \u0432 \u043F\u043E\u0440\u044F\u0434\u043A\u0435
-checkingFirewalls = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u044D\u043A\u0440\u0430\u043D\u043E\u0432. . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0441\u0435\u0442\u0438. . . . . . . . . . . . . . . . . .
-clickStart = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C \u0442\u0435\u0441\u0442
-clickStart2 = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
-client = \u041A\u043B\u0438\u0435\u043D\u0442
-client2 = \u041A\u043B\u0438\u0435\u043D\u0442
-clientAcksReport = \u041A\u043B\u0438\u0435\u043D\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u043B\u0438\u043D\u043A
-clientDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E
-clientInfo = \u0414\u0430\u043D\u043D\u044B\u0435 \u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0435
-clientIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-clientIpNotFound = IP-\u0430\u0434\u0440\u0435\u0441 \u041A\u043B\u0438\u0435\u043D\u0442\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u0414\u043B\u044F IE \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B Java \n \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043C\u0435\u043D\u044E Service \u2013 Network Options - Security - Level, \u043F\u0440\u043E\u043B\u0438\u0441\u0442\u043D\u0438\u0442\u0435 \u0432\u043D\u0438\u0437 \u0434\u043E \n Microsoft VM - Java Permissions \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 Custom, \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435 na Java Custom Settings \n Edit Persmissions - \u0434\u043E\u0441\u0442\u0443\u043F \u043A\u043E \u0432\u0441\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0430\u0434\u0440\u0435\u0441\u0430\u043C, \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 En\u0430ble \u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442e \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F
-clientIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0430\u043D\u0438\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-clientSays =, \u043D\u043E \u043A\u043B\u0438\u0435\u043D\u0442 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
-close = \u0417\u0430\u043A\u0440\u044B\u0442\u044C
-comments = \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438
-congestNo = \u041F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0430.
-congestYes = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430 \u043F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0442\u0440\u0430\u0444\u0438\u043A\u043E\u043C.
-connIdle = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0445\u043B\u0430\u0436\u0434\u0430\u043B\u043E\u0441\u044C \u0431\u0435\u0437 \u0442\u0440\u0430\u0444\u0438\u043A\u0430
-connStalled = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0441\u0442\u0440\u044F\u043B\u043E
-connected = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043A:
-connectedTo = \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D \u043A
-copy = \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C
-defaultTests = \u0422\u0435\u0441\u0442\u044B \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
-delayBetweenTests = \u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u043C\u0435\u0436\u0434\u0443 \u0442\u0435\u0441\u0442\u0430\u043C\u0438
-detailedStats = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
-dialup = \u043C\u043E\u0434\u0435\u043C
-dialup2 = \u043C\u043E\u0434\u0435\u043C
-done = \u0413\u043E\u0442\u043E\u0432\u043E
-done2 = Tcpbw100 \u0433\u043E\u0442\u043E\u0432\u043E
-dupAcksIn = \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 acks
-duplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-duplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-duplexNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0440\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:
-duplexOk = \u041D\u043E\u0440\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u044B \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D.
-endOfEmail = \u041E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-excLoss = \u0427\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u044B\u0435 \u043F\u043E\u0442\u0435\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u044E \u0430\u0432\u0442\u043E-\u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u041F\u041A \u0438 \u043D\u0430 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u043E\u043C \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0435
-excessiveErrors = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C(\u044B).
-firewallNo = \u043D\u0435 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442 \u043F\u0440\u043E\u0448\u043B\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u043E]
-firewallYes = \u0432\u0435\u0440\u043E\u044F\u0442\u043D\u043E \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442\u0443]
-flowControlLimits = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u043F\u043E\u0442\u043E\u043A\u043E\u043C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-found100mbps = 100 \u041C\u0431\u0438\u0442/\u0441 FastEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found10gbps = 10 \u0413\u0431\u0438\u0442/\u0441 10 GigEthernet/OC-192 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found10mbps = 10 \u041C\u0431\u0438\u0442/\u0441 Ethernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 GigabitEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-foundDialup = \u041C\u043E\u0434\u0435\u043C\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-foundDsl = \u041A\u0430\u0431\u0435\u043B\u044C\u043D\u043E\u0435 modem/DSL/T1 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-fullDuplex = \u043F\u043E\u043B\u043D\u043E\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-general= \u041E\u0431\u0449\u0438\u0435
-generatingReport = \u0413\u043E\u0442\u043E\u0432\u0438\u0442\u0441\u044F \u043E\u0442\u0447\u0435\u0442 \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435: \u0414\u0430\u043D\u043D\u044B\u0439 \u043E\u0442\u0447\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0441\u043B\u0430\u043D \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u043B\u0438\u0446\u0430\u043C
-getWeb100Var = \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C Web100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-getWeb100Var = \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C Web10G \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-halfDuplex = \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-id = TCP/Web100/Web10G Network Diagnostic Tool (NDT)
-immediate = \u0441\u0438\u044E \u043C\u0438\u043D\u0443\u0442\u0443
-inboundTest = Tcpbw100 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
-inboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C:\u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-incompatibleVersion = \u041D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F
-incrRxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0435\u043C\u043D\u043E\u0433\u043E \u0431\u0443\u0444\u0435\u0440\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-incrTxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 NDT
-information = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F
-initialization = \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F ...
-insufficient = \u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0434\u0430\u043D\u043D\u044B\u0445, \u0441\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F.
-invokingMailtoFunction = Tcpbw100 \u0412\u044B\u0437\u043E\u0432 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 Mailto
-ipProtocol = \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B
-ipcFail = \u041C\u0435\u0436\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0431\u044B\u043B\u043E \u043D\u0430\u0440\u0443\u0448\u0435\u043D\u043E, \u0442\u0438\u043F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D.
-usingIpv4 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv4 \u0430\u0434\u0440\u0435\u0441
-usingIpv6 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv6 \u0430\u0434\u0440\u0435\u0441
-javaData = Java \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
-kbyteBufferLimits = \u041A\u0411\u0430\u0439\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-limitNet = \u0441\u0435\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430
-limitRx = \u043F\u0440\u0438\u0435\u043C\u043D\u0438\u043A \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
-limitTx = \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
-linkFullDpx = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u043D\u044B\u0439 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C
-linkHalfDpx =\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435
-loggingWrongMessage = \u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-lookupError = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441
-mboxWrongMessage = \u0422\u0435\u0441\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-meta = META
-metaFailed = META test FAILED!
-metaTest = META test...
-metaWrongMessage = META test: Received wrong type of the message
-middlebox = \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
-middleboxFail = \u0418\u0421\u0414 \u043D\u0435 \u0441\u043C\u043E\u0433 \u043F\u0440\u043E\u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
-middleboxFail2 = \u0422\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0431\u044B\u043B\u043E \u043E\u0431\u043E\u0440\u0432\u0430\u043D\u043E !
-middleboxModifyingMss = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 MSS(\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430 \u0434\u0430\u043D\u043D\u044B\u0445)
-middleboxTest = Tcpbw100 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438...
-moreDetails = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 ...
-name = \u0438\u043C\u044F
-ndtServerHas = NDT \u0441\u0435\u0440\u0432\u0435\u0440
-noPktLoss1 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E
-noPktLoss2 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0431\u043B\u044E\u0434\u0430\u043B\u043E\u0441\u044C
-numberOfTests = \u0447\u0438\u0441\u043B\u043E \u0442\u0435\u0441\u0442\u043E\u0432
-of =
-off = \u0412\u044B\u043A\u043B
-ok = \u0412\u0432\u0435\u0441\u0442\u0438
-oldDuplexMismatch = \u201C\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0420\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u0441\u043D\u043E\u0432\u0430 \u0431\u044B\u043B\u043E \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:"
-on = \u0412\u043A\u043B
-ooOrder = \u043D\u043E \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0440\u0438\u0431\u044B\u043B\u0438 \u0432\u043D\u0435 \u043F\u043E\u0440\u044F\u0434\u043A\u0430
-options = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432
-osData = \u0414\u0430\u043D\u043D\u044B\u0435 \u041E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0439 \u0421\u0438\u0441\u0442\u0435\u043C\u044B:
-otherClient = \u0414\u0440\u0443\u0433\u043E\u0439 \u043A\u043B\u0438\u0435\u043D\u0442 \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F, \u0432\u0430\u0448 \u0442\u0435\u0441\u0442 \u043D\u0430\u0447\u043D\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435
-otherTraffic = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043A \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043B\u0438\u043D\u043A
-outboundTest = Tcpbw100 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
-outboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-packetQueuing = \u041D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-packetQueuingInfo = TCP (Transmission Control Protocol) \u043D\u0430\u0434\u0435\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043C\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043C\u044F\n \u0445\u043E\u0441\u0442\u0430\u043C\u0438 \u0432 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0435. \u041E\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u043E\u0448\u0438\u0431\u043E\u043A \u0438\n \u043F\u043E\u0442\u0435\u0440\u044C. TCP \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044E \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442\u044C \u044D\u0442\u0443 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0441\u0442\u044C. \u041A\u0440\u043E\u043C\u0435 \u0442\u043E\u0433\u043E,\n \u0432 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043A\u043E\u043C\u043C\u0443\u0442\u0430\u0442\u043E\u0440\u0430\u0445 \u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043E\u0440\u0430\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u0432 \u0441\u043B\u0443\u0447\u0430\u044F\u0445, \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439 \n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442 \u043F\u0430\u043A\u0435\u0442\u044B \u0432 \u043E\u0434\u043D\u043E \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0435 \u0438\u043B\u0438 \u043A\u043E\u0433\u0434\u0430 \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \n (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0441 FastEthernet \u0434\u043E DSL \u043C\u043E\u0434\u0435\u043C\u0430).\n\n NDT \u0441\u0435\u0440\u0432\u0435\u0440 \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u0442 \u043A\u0430\u0436\u0434\u044B\u0435 10 \u0441\u0435\u043A\u0443\u043D\u0434 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0443.\n \u0412 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445 \u0441\u0435\u0440\u0432\u0435\u0440 \u043C\u043E\u0436\u0435\u0442 \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0431\u044B\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043C \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0441\u044B\u043B\u0430\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B\n \u0432 \u0441\u0435\u0442\u044C (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u043E\u043C 2 \u0413\u0413\u0446 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0433\u043E \u0434\u0430\u043D\u043D\u044B\u0435 \u043D\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 DSL).\n \u041A\u043E\u0433\u0434\u0430 \u044D\u0442\u043E \u0441\u043B\u0443\u0447\u0430\u0435\u0442\u0441\u044F, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0430\u043A\u0435\u0442\u044B \u043C\u043E\u0433\u0443\u0442 \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u0439 \u043E\u0447\u0435\u0440\u0435\u0434\u044C\u044C\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\n \u0434\u0430\u0436\u0435 \u043A\u043E\u0433\u0434\u0430 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0430\u0439\u043C\u0435\u0440 \u0438\u0441\u0442\u0435\u0447\u0435\u0442. TCP \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u044D\u0442\u0438 \u043F\u0430\u043A\u0435\u0442\u044B \u0438\u0437 \u043E\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u043A\u043B\u0438\u0435\u043D\u0442 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u0438\n \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u044D\u0442\u0438 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u044B. \u042D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043A\n \u0442\u043E\u043C\u0443 \u0447\u0442\u043E \u0442\u0435\u0441\u0442 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u0442\u044F\u043D\u0443\u0442\u044C\u0441\u044F.\n\n \u042D\u0442\u043E \u0441\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0435\u0441\u0442\u0430. \u041D\u0438\u043A\u0430\u043A\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043F\u0440\u0435\u0434\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E\u0431\u044B\n \u0440\u0435\u0448\u0438\u0442\u044C \u044D\u0442\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443.
-packetSizePreserved = \u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0441\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-packetsize = \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430
-pc = \u041F\u041A
-pctOfTime =% \u0432\u0440\u0435\u043C\u0435\u043D\u0438
-performedTests = \u0417\u0430\u043A\u043E\u043D\u0447\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u0441\u0442\u044B
-pktsRetrans = \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0435\u0440\u0435\u0441\u043B\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E
-possibleDuplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-possibleDuplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-possibleDuplexHalfFullWarning = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-preferIPv6 = \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0435\u043D\u0438\u0435 IPv6
-printDetailedStats = \u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u0442\u044C \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0443
-protocolError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430! \u041E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C 'prepare', \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u0438: 0x
-qSeen = \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-ready = Tcpbw100 \u0433\u043E\u0442\u043E\u0432
-receiveBufferShouldBe = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u0438\u0435\u043C\u043D\u044B\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C
-receiving = \u041F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 ...
-reportProblem = \u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435
-resultsParseError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F!
-resultsTimeout = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435! \u041A\u043B\u0438\u0435\u043D\u0442 \u043E\u0442\u0432\u0430\u043B\u0438\u043B\u0441\u044F \u043F\u043E \u0442\u0430\u0439\u043C-\u0430\u0443\u0442\u0443 \u043F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043D\u0435\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430
-resultsWrongMessage = \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-rtt = RTT
-rttFail = \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u044F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B \u0438\u0437-\u0437\u0430 \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0439 \u0434\u0432\u0443\u0445\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 (RTT).
-runningInboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043E\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043A \u043A\u043B\u0438\u0435\u043D\u0442\u0443 [S2C]). . . . . .
-runningOutboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043A\u043B\u0438\u0435\u043D\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 [C2S]). . . . .
-S2C = S2C
-s2cPacketQueuingDetected = [S2C]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-s2cThroughput = S2C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-s2cThroughputFailed = S2C \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u041D\u0415 \u0421\u0420\u0410\u0411\u041E\u0422\u0410\u041B !
-sackReceived = \u0431\u043B\u043E\u043A\u0438 SACK \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B
-scalingFactors = \u0424\u0430\u043A\u0442\u043E\u0440\u044B \u041C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F
-seconds = \u0441\u0435\u043A\u0443\u043D\u0434
-sendingMetaInformation = Sending META information . . . . . . . . . . . . . . . . . . .
-server = \u0421\u0435\u0440\u0432\u0435\u0440
-serverAcksReport = \u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0442\u0432\u0435\u0442\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-serverBusy = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 \u043E\u0436\u0438\u0434\u0430\u044E\u0442 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0436\u0435
-serverBusy15s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 15 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverBusy30s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 30 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverBusy60s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 60 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u0441 \u0421\u0435\u0440\u0432\u0435\u0440\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-serverFail Server = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445
-serverIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-serverIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-serverNotRunning = \u0421\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442: \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 web100srv \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u043C \u0441\u0435\u0440\u0432\u0435\u0440\u0435
-serverSays = \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
-sfwFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D \u041D\u0415 \u041F\u0420\u041E\u0428\u0415\u041B!
-sfwSocketFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (socket)
-sfwTest = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D...
-sfwWrongMessage = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-showOptions = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
-simpleFirewall = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D
-sleep10m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 10 \u043C\u0438\u043D\u0443\u0442 ...
-sleep1m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u043C\u0438\u043D ...
-sleep30m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 30 \u043C\u0438\u043D\u0443\u0442 ...
-sleep5m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 5 \u043C\u0438\u043D\u0443\u0442 ...
-sleep12h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 12 \u0447\u0430\u0441\u043E\u0432 ...
-sleep1d = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u0434\u0435\u043D\u044C ...
-sleep2h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 2 \u0447\u0430\u0441\u0430 ...
-start = \u0421\u0422\u0410\u0420\u0422
-startingTest = \u041D\u0430\u0447\u0438\u043D\u0430\u0435\u043C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
-statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
-stop = \u0421\u0422\u041E\u041F
-stopped = \u0422\u0435\u0441\u0442\u044B \u0431\u044B\u043B\u0438 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u044B!
-stopping = O\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C\u0441\u044F...
-systemFault = \u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0430\u044F \u043D\u0435\u043F\u043E\u043B\u0430\u0434\u043A\u0430
-test = \u0422\u0415\u0421\u0422
-testsuiteWrongMessage = \u041E\u0431\u043C\u0435\u043D \u0441\u043E\u043E\u0431\u0448\u0435\u043D\u0438\u0439 \u043E \u043D\u0430\u0431\u043E\u0440\u0435 \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-theSlowestLink = \u0421\u0430\u043C\u043E\u0435 \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u0435 \u0437\u0432\u0435\u043D\u043E \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0442\u044F\u0436\u0435\u043D\u0438\u0438 \u0441\u0435\u0442\u0438
-theoreticalLimit = \u0422\u0435\u043E\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u043F\u0440\u0435\u0434\u0435\u043B \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u043E\u0439 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0442\u0438
-thisConnIs = \u042D\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-timesPktLoss = \u0440\u0430\u0437 \u0438\u0437-\u0437\u0430 \u043F\u043E\u0442\u0435\u0440\u0438 \u043F\u0430\u043A\u0435\u0442\u043E\u0432
-toMaximizeThroughput = \u043A\u0431\u0430\u0439\u0442 \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438
-troubleReportFrom = \u041E\u0442\u0447\u0435\u0442 \u0418\u0421\u0414 \u043E \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u0445 \u043D\u0430
-unableToDetectBottleneck = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0442\u0438\u043F \u0441\u0435\u0442\u0435\u0432\u043E\u0433\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0430 \u0441\u0430\u043C\u043E\u043C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u043C \u0437\u0432\u0435\u043D\u0435 \u0441\u0435\u0442\u0438.
-unableToObtainIP = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 IP \u0430\u0434\u0440\u0435\u0441
-unknownID = \u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440(ID) \u0442\u0435\u0441\u0442\u0430
-unknownServer = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043D
-unsupportedClient = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044D\u0442\u043E\u0433\u043E \u043A\u043E\u043C\u043C\u0430\u043D\u0434\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-vendor = \u041F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C
-version = \u0412\u0435\u0440\u0441\u0438\u044F
-versionWrongMessage = \u0412\u044B\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0418\u0421\u0414: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-web100Details = Web100 \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0439 \u041E\u0442\u0447\u0435\u0442
-web100KernelVar = Web100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u044F\u0434\u0440\u0430
-web100Stats = Web100 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430
-web100Var = Web100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-web100rtt = Web100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u0443\u0434\u0430-\u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0435 (RTT)
-web100tcpOpts = Web100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u043E\u043C \u0447\u0442\u043E \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0435 \u043E\u0431\u043C\u0435\u043D\u0430 TCP \u0431\u044B\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438:
-web10gDetails = Web10G \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0439 \u041E\u0442\u0447\u0435\u0442
-web10gKernelVar = Web10G \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u044F\u0434\u0440\u0430
-web10gStats = Web10G \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430
-web10gVar = Web10G \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-web10grtt = Web10G \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u0443\u0434\u0430-\u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0435 (RTT)
-web10gtcpOpts = Web10G \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u043E\u043C \u0447\u0442\u043E \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0435 \u043E\u0431\u043C\u0435\u043D\u0430 TCP \u0431\u044B\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438:
-willImprove = \u043F\u043E\u0437\u0432\u043E\u043B\u0438\u0442 \u043F\u043E\u0432\u044B\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
-workstation = \u0420\u0430\u0431\u043E\u0447\u0430\u044F \u0421\u0442\u0430\u043D\u0446\u0438\u044F
-your = \u0412\u0430\u0448
-yourPcHas = \u0423 \u0412\u0430\u0448\u0435\u0433\u043E \u041F\u041A/\u0420\u0430\u0431\u043E\u0447\u0435\u0439 \u0421\u0442\u0430\u043D\u0446\u0438\u0438 \u0435\u0441\u0442\u044C
-connectingTo = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u0441\u044F \u043A
-toRunTest = \u043F\u0440\u043E\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u0441\u0442
=======================================
--- /branches/AppletIssue92/Applet/UserAgentTools.java Mon Apr 30 20:46:39 2012 UTC
+++ /dev/null
@@ -1,449 +0,0 @@
-/* This class has code taken from
- * http://nerds.palmdrive.net/useragent/code.html
- *
- * Class used to obtain information about who is accessing a web-server.
- *
- * When a web browser accesses a web-server, it usually transmits a "User-Agent" string.
- * This is expected to include the name and versions of the browser and
- * the underlying Operating System. Though the information inside a user-agent string is not restricted to
- * these alone, currently, NDT uses this to get Browser OS only.
- *
- */
-
-public class UserAgentTools {
-
- public static String getFirstVersionNumber(String a_userAgent,
- int a_position, int numDigits) {
- String ver = getVersionNumber(a_userAgent, a_position);
- if (ver == null)
- return "";
- int i = 0;
- String res = "";
- while (i < ver.length() && i < numDigits) {
- res += String.valueOf(ver.charAt(i));
- i++;
- }
- return res;
- }
-
- public static String getVersionNumber(String a_userAgent, int a_position) {
- if (a_position < 0)
- return "";
- StringBuffer res = new StringBuffer();
- int status = 0;
-
- while (a_position < a_userAgent.length()) {
- char c = a_userAgent.charAt(a_position);
- switch (status) {
- case 0: // <SPAN class="codecomment"> No valid digits
encountered
- // yet</span>
- if (c == ' ' || c == '/')
- break;
- if (c == ';' || c == ')')
- return "";
- status = 1;
- case 1: // <SPAN class="codecomment"> Version number
in
- // progress</span>
- if (c == ';' || c == '/' || c == ')' || c ==
'(' || c == '[')
- return res.toString().trim();
- if (c == ' ')
- status = 2;
- res.append(c);
- break;
- case 2: // <SPAN class="codecomment"> Space
encountered - Might need
- // to end the parsing</span>
- if ((Character.isLetter(c) &&
Character.isLowerCase(c))
- || Character.isDigit(c)) {
- res.append(c);
- status = 1;
- } else
- return res.toString().trim();
- break;
- }
- a_position++;
- }
- return res.toString().trim();
- }
-
- public static String[] getArray(String a, String b, String c) {
- String[] res = new String[3];
- res[0] = a;
- res[1] = b;
- res[2] = c;
- return res;
- }
-
- public static String[] getBotName(String userAgent) {
- userAgent = userAgent.toLowerCase();
- int pos = 0;
- String res = null;
- if ((pos = userAgent.indexOf("help.yahoo.com/")) > -1) {
- res = "Yahoo";
- pos += 7;
- } else if ((pos = userAgent.indexOf("google/")) > -1) {
- res = "Google";
- pos += 7;
- } else if ((pos = userAgent.indexOf("msnbot/")) > -1) {
- res = "MSNBot";
- pos += 7;
- } else if ((pos = userAgent.indexOf("googlebot/")) > -1) {
- res = "Google";
- pos += 10;
- } else if ((pos = userAgent.indexOf("webcrawler/")) > -1) {
- res = "WebCrawler";
- pos += 11;
- } else if ((pos = userAgent.indexOf("inktomi")) > -1) {
- // <SPAN class="codecomment"> The following two bots
don't have any
- // version number in their User-Agent strings.</span>
- res = "Inktomi";
- pos = -1;
- } else if ((pos = userAgent.indexOf("teoma")) > -1) {
- res = "Teoma";
- pos = -1;
- }
- if (res == null)
- return null;
- return getArray(res, res, res + getVersionNumber(userAgent,
pos));
- }
-
- public static String[] getOS(String userAgent) {
- if (getBotName(userAgent) != null)
- return getArray("Bot", "Bot", "Bot");
- String[] res = null;
- int pos;
- if ((pos = userAgent.indexOf("Windows-NT")) > -1) {
- res = getArray("Win", "WinNT",
- "Win" + getVersionNumber(userAgent,
pos + 8));
- } else if (userAgent.indexOf("Windows NT") > -1) {
- // <SPAN class="codecomment"> The different versions
of Windows NT
- // are decoded in the verbosity level 2</span>
- // <SPAN class="codecomment"> ie: Windows NT 5.1 = Windows
XP</span>
- if ((pos = userAgent.indexOf("Windows NT 5.1")) > -1)
{
- res = getArray("Win", "WinXP",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT 6.0"))
> -1) {
- res = getArray("Win", "Vista",
- "Vista" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT 6.1"))
> -1) {
- res = getArray("Win", "Seven",
- "Seven " +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT 5.0"))
> -1) {
- res = getArray("Win", "Win2000",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT 5.2"))
> -1) {
- res = getArray("Win", "Win2003",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT 4.0"))
> -1) {
- res = getArray("Win", "WinNT4",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows NT)")) >
-1) {
- res = getArray("Win", "WinNT", "WinNT");
- } else if ((pos = userAgent.indexOf("Windows NT;")) >
-1) {
- res = getArray("Win", "WinNT", "WinNT");
- } else {
- res = getArray("Win", "WinNT?", "WinNT?");
- }
- } else if (userAgent.indexOf("Win") > -1) {
- if (userAgent.indexOf("Windows") > -1) {
- if ((pos = userAgent.indexOf("Windows 98")) >
-1) {
- res = getArray("Win", "Win98",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos =
userAgent.indexOf("Windows_98")) > -1) {
- res = getArray("Win", "Win98",
- "Win" +
getVersionNumber(userAgent, pos + 8));
- } else if ((pos = userAgent.indexOf("Windows
2000")) > -1) {
- res = getArray("Win", "Win2000",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows
95")) > -1) {
- res = getArray("Win", "Win95",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows
9x")) > -1) {
- res = getArray("Win", "Win9x",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows
ME")) > -1) {
- res = getArray("Win", "WinME",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Windows
CE;")) > -1) {
- res = getArray("Win", "WinCE",
"WinCE");
- } else if ((pos = userAgent.indexOf("Windows
3.1")) > -1) {
- res = getArray("Win", "Win31",
- "Win" +
getVersionNumber(userAgent, pos + 7));
- }
- // <SPAN class="codecomment"> If no version
was found, rely on
- // the following code to detect "WinXX"</span>
- // <SPAN class="codecomment"> As some
User-Agents include two
- // references to Windows</span>
- // <SPAN class="codecomment"> Ex: Mozilla/5.0
(Windows; U;
- // Win98; en-US; rv:1.5)</span>
- }
- if (res == null) {
- if ((pos = userAgent.indexOf("Win98")) > -1) {
- res = getArray("Win", "Win98",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("Win31"))
> -1) {
- res = getArray("Win", "Win31",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("Win95"))
> -1) {
- res = getArray("Win", "Win95",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("Win 9x"))
> -1) {
- res = getArray("Win", "Win9x",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("WinNT4.0"))
> -1) {
- res = getArray("Win", "WinNT4",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("WinNT"))
> -1) {
- res = getArray("Win", "WinNT",
- "Win" +
getVersionNumber(userAgent, pos + 3));
- }
- }
- if (res == null) {
- if ((pos = userAgent.indexOf("Windows")) >
-1) {
- res = getArray("Win", "Win?",
- "Win?" +
getVersionNumber(userAgent, pos + 7));
- } else if ((pos = userAgent.indexOf("Win")) >
-1) {
- res = getArray("Win", "Win?",
- "Win?" +
getVersionNumber(userAgent, pos + 3));
- } else
- // <SPAN class="codecomment"> Should
not happen at this
- // point</span>
- res = getArray("Win", "Win?", "Win?");
- }
- } else if ((pos = userAgent.indexOf("Mac OS X")) > -1) {
- if ((userAgent.indexOf("iPhone")) > -1) {
- pos = userAgent.indexOf("iPhone OS");
- if ((userAgent.indexOf("iPod")) > -1) {
- res = getArray(
- "iOS",
- "iOS-iPod",
- "iOS-iPod "
- + ((pos < 0) ?
"" : getVersionNumber(
-
userAgent, pos + 9)));
- } else {
- res = getArray(
- "iOS",
- "iOS-iPhone",
- "iOS-iPhone "
- + ((pos < 0) ?
"" : getVersionNumber(
-
userAgent, pos + 9)));
- }
- } else if ((userAgent.indexOf("iPad")) > -1) {
- pos = userAgent.indexOf("CPU OS");
- res = getArray("iOS", "iOS-iPad", "iOS-iPad "
- + ((pos < 0) ? ""
- :
getVersionNumber(userAgent, pos + 6)));
- } else
- res = getArray("Mac", "MacOSX",
- "MacOS " +
getVersionNumber(userAgent, pos + 8));
- } else if ((pos = userAgent.indexOf("Android")) > -1) {
- res = getArray("Linux", "Android",
- "Android " +
getVersionNumber(userAgent, pos + 8));
- } else if ((pos = userAgent.indexOf("Mac_PowerPC")) > -1) {
- res = getArray("Mac", "MacPPC",
- "MacOS " +
getVersionNumber(userAgent, pos + 3));
- } else if ((pos = userAgent.indexOf("Macintosh")) > -1) {
- if (userAgent.indexOf("PPC") > -1)
- res = getArray("Mac", "MacPPC", "Mac PPC");
- else
- res = getArray("Mac?", "Mac?", "MacOS?");
- } else if ((pos = userAgent.indexOf("FreeBSD")) > -1) {
- res = getArray("*BSD", "*BSD FreeBSD", "FreeBSD "
- + getVersionNumber(userAgent, pos +
7));
- } else if ((pos = userAgent.indexOf("OpenBSD")) > -1) {
- res = getArray("*BSD", "*BSD OpenBSD", "OpenBSD "
- + getVersionNumber(userAgent, pos +
7));
- } else if ((pos = userAgent.indexOf("Linux")) > -1) {
- String detail = "Linux " +
getVersionNumber(userAgent, pos + 5);
- String med = "Linux";
- if ((pos = userAgent.indexOf("Ubuntu/")) > -1) {
- detail = "Ubuntu " +
getVersionNumber(userAgent, pos + 7);
- med += " Ubuntu";
- }
- res = getArray("Linux", med, detail);
- } else if ((pos = userAgent.indexOf("CentOS")) > -1) {
- res = getArray("Linux", "Linux CentOS", "CentOS");
- } else if ((pos = userAgent.indexOf("NetBSD")) > -1) {
- res = getArray("*BSD", "*BSD NetBSD",
- "NetBSD " +
getVersionNumber(userAgent, pos + 6));
- } else if ((pos = userAgent.indexOf("Unix")) > -1) {
- res = getArray("Linux", "Linux",
- "Linux " +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("SunOS")) > -1) {
- res = getArray("Unix", "SunOS",
- "SunOS" + getVersionNumber(userAgent,
pos + 5));
- } else if ((pos = userAgent.indexOf("IRIX")) > -1) {
- res = getArray("Unix", "IRIX",
- "IRIX" + getVersionNumber(userAgent,
pos + 4));
- } else if ((pos = userAgent.indexOf("SonyEricsson")) > -1) {
- res = getArray("SonyEricsson", "SonyEricsson",
"SonyEricsson"
- + getVersionNumber(userAgent, pos +
12));
- } else if ((pos = userAgent.indexOf("Nokia")) > -1) {
- res = getArray("Nokia", "Nokia",
- "Nokia" + getVersionNumber(userAgent,
pos + 5));
- } else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
- res = getArray("BlackBerry", "BlackBerry",
"BlackBerry"
- + getVersionNumber(userAgent, pos +
10));
- } else if ((pos = userAgent.indexOf("SymbianOS")) > -1) {
- res = getArray("SymbianOS", "SymbianOS", "SymbianOS"
- + getVersionNumber(userAgent, pos +
10));
- } else if ((pos = userAgent.indexOf("BeOS")) > -1) {
- res = getArray("BeOS", "BeOS", "BeOS");
- } else if ((pos = userAgent.indexOf("Nintendo Wii")) > -1) {
- res = getArray("Nintendo Wii", "Nintendo Wii", "Nintendo
Wii"
- + getVersionNumber(userAgent, pos +
10));
- } else if ((pos = userAgent.indexOf("J2ME/MIDP")) > -1) {
- res = getArray("Java", "J2ME", "J2ME/MIDP");
- } else
- res = getArray("?", "?", "?");
- return res;
- }
-
- public static String[] getBrowser(String userAgent) {
- if (userAgent == null) {
- return getArray("?", "?", "?");
- }
- String[] botName;
- if ((botName = getBotName(userAgent)) != null)
- return botName;
- String[] res = null;
- int pos;
- if ((pos = userAgent.indexOf("Lotus-Notes/")) > -1) {
- res = getArray("LotusNotes", "LotusNotes",
"LotusNotes"
- + getVersionNumber(userAgent, pos +
12));
- } else if ((pos = userAgent.indexOf("Opera")) > -1) {
- String ver = getVersionNumber(userAgent, pos + 5);
- res = getArray("Opera",
- "Opera" +
getFirstVersionNumber(userAgent, pos + 5, 1),
- "Opera" + ver);
- if ((pos = userAgent.indexOf("Opera Mini/")) > -1) {
- String ver2 = getVersionNumber(userAgent, pos
+ 11);
- res = getArray("Opera", "Opera Mini", "Opera Mini
" + ver2);
- } else if ((pos = userAgent.indexOf("Opera Mobi/")) >
-1) {
- String ver2 = getVersionNumber(userAgent, pos
+ 11);
- res = getArray("Opera", "Opera Mobi", "Opera Mobi
" + ver2);
- }
- } else if (userAgent.indexOf("MSIE") > -1) {
- if ((pos = userAgent.indexOf("MSIE 6.0")) > -1) {
- res = getArray("MSIE", "MSIE6",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 5.0")) >
-1) {
- res = getArray("MSIE", "MSIE5",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 5.5")) >
-1) {
- res = getArray("MSIE", "MSIE5.5",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 5.")) > -1)
{
- res = getArray("MSIE", "MSIE5.x",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 4")) > -1) {
- res = getArray("MSIE", "MSIE4",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 7")) > -1
- && userAgent.indexOf("Trident/4.0") <
0) {
- res = getArray("MSIE", "MSIE7",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 8")) > -1
- || userAgent.indexOf("Trident/4.0") >
-1) {
- res = getArray("MSIE", "MSIE8",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else if ((pos = userAgent.indexOf("MSIE 9")) > -1
- || userAgent.indexOf("Trident/4.0") >
-1) {
- res = getArray("MSIE", "MSIE9",
- "MSIE" +
getVersionNumber(userAgent, pos + 4));
- } else
- res = getArray(
- "MSIE",
- "MSIE?",
- "MSIE?"
- +
getVersionNumber(userAgent,
-
userAgent.indexOf("MSIE") + 4));
- } else if ((pos = userAgent.indexOf("Gecko/")) > -1) {
- res = getArray("Gecko", "Gecko",
- "Gecko" +
getFirstVersionNumber(userAgent, pos + 5, 4));
- if ((pos = userAgent.indexOf("Camino/")) > -1) {
- res[1] += "(Camino)";
- res[2] += "(Camino" +
getVersionNumber(userAgent, pos + 7)
- + ")";
- } else if ((pos = userAgent.indexOf("Chimera/")) >
-1) {
- res[1] += "(Chimera)";
- res[2] += "(Chimera" +
getVersionNumber(userAgent, pos + 8)
- + ")";
- } else if ((pos = userAgent.indexOf("Firebird/")) >
-1) {
- res[1] += "(Firebird)";
- res[2] += "(Firebird" +
getVersionNumber(userAgent, pos + 9)
- + ")";
- } else if ((pos = userAgent.indexOf("Phoenix/")) >
-1) {
- res[1] += "(Phoenix)";
- res[2] += "(Phoenix" +
getVersionNumber(userAgent, pos + 8)
- + ")";
- } else if ((pos = userAgent.indexOf("Galeon/")) > -1)
{
- res[1] += "(Galeon)";
- res[2] += "(Galeon" +
getVersionNumber(userAgent, pos + 7)
- + ")";
- } else if ((pos = userAgent.indexOf("Firefox/")) >
-1) {
- res[1] += "(Firefox)";
- res[2] += "(Firefox" +
getVersionNumber(userAgent, pos + 8)
- + ")";
- } else if ((pos = userAgent.indexOf("Netscape/")) >
-1) {
- if ((pos = userAgent.indexOf("Netscape/6")) >
-1) {
- res[1] += "(NS6)";
- res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
- + ")";
- } else if ((pos =
userAgent.indexOf("Netscape/7")) > -1) {
- res[1] += "(NS7)";
- res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
- + ")";
- } else if ((pos =
userAgent.indexOf("Netscape/8")) > -1) {
- res[1] += "(NS8)";
- res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
- + ")";
- } else if ((pos =
userAgent.indexOf("Netscape/9")) > -1) {
- res[1] += "(NS9)";
- res[2] += "(NS" +
getVersionNumber(userAgent, pos + 9)
- + ")";
- } else {
- res[1] += "(NS?)";
- res[2] += "(NS?"
- +
getVersionNumber(userAgent,
-
userAgent.indexOf("Netscape/") + 9) + ")";
- }
- }
- } else if ((pos = userAgent.indexOf("Netscape/")) > -1) {
- if ((pos = userAgent.indexOf("Netscape/4")) > -1) {
- res = getArray("NS", "NS4",
- "NS" +
getVersionNumber(userAgent, pos + 9));
- } else
- res = getArray("NS", "NS?",
- "NS?" +
getVersionNumber(userAgent, pos + 9));
- } else if ((pos = userAgent.indexOf("Chrome/")) > -1) {
- res = getArray("KHTML", "KHTML(Chrome)",
"KHTML(Chrome"
- + getVersionNumber(userAgent, pos + 6) +
")");
- } else if ((pos = userAgent.indexOf("Safari/")) > -1) {
- res = getArray("KHTML", "KHTML(Safari)",
"KHTML(Safari"
- + getVersionNumber(userAgent, pos + 6) +
")");
- } else if ((pos = userAgent.indexOf("Konqueror/")) > -1) {
- res = getArray("KHTML", "KHTML(Konqueror)",
"KHTML(Konqueror"
- + getVersionNumber(userAgent, pos + 9) +
")");
- } else if ((pos = userAgent.indexOf("KHTML")) > -1) {
- res = getArray("KHTML", "KHTML?",
- "KHTML?(" + getVersionNumber(userAgent, pos +
5) + ")");
- } else if ((pos = userAgent.indexOf("NetFront")) > -1) {
- res = getArray("NetFront", "NetFront", "NetFront "
- + getVersionNumber(userAgent, pos +
8));
- } else if ((pos = userAgent.indexOf("BlackBerry")) > -1) {
- pos = userAgent.indexOf("/", pos + 2);
- res = getArray("BlackBerry", "BlackBerry",
"BlackBerry"
- + getVersionNumber(userAgent, pos +
1));
- } else if (userAgent.indexOf("Mozilla/4.") == 0
- && userAgent.indexOf("Mozilla/4.0") < 0
- && userAgent.indexOf("Mozilla/4.5 ") < 0) {
- // <SPAN class="codecomment"> We will interpret
Mozilla/4.x as
- // Netscape Communicator is and only if x</span>
- // <SPAN class="codecomment"> is not 0 or 5</span>
- res = getArray("Communicator", "Communicator",
"Communicator"
- + getVersionNumber(userAgent, pos +
8));
- } else
- return getArray("?", "?", "?");
- return res;
- }
-}
=======================================
--- /branches/AppletIssue92/janalyze/src/DBConfFrame.java Thu Nov 15 21:17:15 2007 UTC
+++ /dev/null
@@ -1,76 +0,0 @@
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-import javax.swing.BoxLayout;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JPasswordField;
-import java.awt.Container;
-
-public class DBConfFrame extends JFrame
-{
- private static final long serialVersionUID = 1L;
- private JTextField driver = new JTextField(20);
- private JTextField dsn = new JTextField(20);
- private JTextField uid = new JTextField(20);
- private JPasswordField pwd = new JPasswordField(20);
-
- public DBConfFrame(JAnalyze mainWindow) {
-
- Container cp = getContentPane();
- cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));
- JPanel panel = new JPanel();
- JPanel tmpPanel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
- panel.add(new JLabel("Driver:"));
- driver.setText(mainWindow.getProperties().getProperty("driver", "com.mysql.jdbc.Driver"));
- driver.getDocument().addDocumentListener(new PropertyListener(mainWindow, "driver"));
- panel.add(driver);
- tmpPanel.add(panel);
- cp.add(tmpPanel);
- panel = new JPanel();
- tmpPanel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
- panel.add(new JLabel("DSN:"));
- dsn.setText(mainWindow.getProperties().getProperty("dsn", "jdbc:mysql://localhost/test"));
- dsn.getDocument().addDocumentListener(new PropertyListener(mainWindow, "dsn"));
- panel.add(dsn);
- tmpPanel.add(panel);
- cp.add(tmpPanel);
- panel = new JPanel();
- tmpPanel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
- panel.add(new JLabel("UID:"));
- uid.setText(mainWindow.getProperties().getProperty("uid", ""));
- uid.getDocument().addDocumentListener(new PropertyListener(mainWindow, "uid"));
- panel.add(uid);
- tmpPanel.add(panel);
- cp.add(tmpPanel);
- panel = new JPanel();
- tmpPanel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
- panel.add(new JLabel("PWD:"));
- pwd.setText(mainWindow.getProperties().getProperty("pwd", ""));
- pwd.getDocument().addDocumentListener(new PropertyListener(mainWindow, "pwd"));
- panel.add(pwd);
- tmpPanel.add(panel);
- cp.add(tmpPanel);
-
- setSize(270, 150);
- }
-
- public String getDriver() {
- return driver.getText();
- }
-
- public String getDSN() {
- return dsn.getText();
- }
-
- public String getUID() {
- return uid.getText();
- }
-
- public String getPWD() {
- return new String(pwd.getPassword());
- }
-}
=======================================
--- /branches/AppletIssue92/janalyze/src/FilterFrame.java Thu Nov 15 21:17:15 2007 UTC
+++ /dev/null
@@ -1,299 +0,0 @@
-import javax.swing.JFrame;
-import javax.swing.JScrollPane;
-import javax.swing.JPanel;
-import javax.swing.BoxLayout;
-import javax.swing.JCheckBox;
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JComboBox;
-import javax.swing.border.TitledBorder;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Vector;
-import java.util.HashSet;
-import java.util.StringTokenizer;
-
-import java.awt.Dimension;
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-public class FilterFrame extends JFrame
-{
- private JAnalyze mainWindow;
- private static final long serialVersionUID = 1L;
- private Collection<ResultsContainer> results;
- private Collection<String> disabled = new HashSet<String>();
-
- private final Map<String, Integer> ips = new HashMap<String, Integer>();
- private int mismatchFilter;
- private int cableFaultFilter = 2;
- private int congestionFilter = 2;
- private int duplexFilter = 2;
- private int newCongestionFilter = 2;
- private int initialPeakSpeedFilter = 4;
-
- public FilterFrame(JAnalyze mainWindow, Collection<ResultsContainer> results) {
- this.mainWindow = mainWindow;
- this.results = results;
-
- resultsChange();
-
- StringTokenizer st = new StringTokenizer(mainWindow.getProperties().getProperty("disabled", ""), ",");
- while (st.hasMoreTokens()) {
- disabled.add(st.nextToken());
- }
-
- setSize(400, 350);
- }
-
- public Collection<ResultsContainer> getResults() {
- Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
- for (ResultsContainer result : results) {
- if (mismatchFilter != 2 && result.getMismatch() != mismatchFilter)
- continue;
- if (cableFaultFilter != 2 && result.getCable() != cableFaultFilter)
- continue;
- if (congestionFilter != 2 && result.getCongestion() != congestionFilter)
- continue;
- if (duplexFilter != 2 && result.getDuplex() != duplexFilter)
- continue;
- if (newCongestionFilter != 2 && result.getNewCongestion() != newCongestionFilter)
- continue;
- if (initialPeakSpeedFilter != 4 && result.getInitialPeakSpeedEquality() != initialPeakSpeedFilter)
- continue;
- if (ips.get(result.getIP()).equals(1)) {
- newResults.add(result);
- }
- }
- return newResults;
- }
-
- public void resultsChange() {
- Container cp = getContentPane();
- cp.removeAll();
-
- Map<String, Integer> oldIPs = new HashMap<String, Integer>(ips);
-
- ips.clear();
- for (ResultsContainer result : results) {
- if (!oldIPs.containsKey(result.getIP())) {
- ips.put(result.getIP(), disabled.contains(result.getIP()) ? 0 : 1);
- }
- else {
- ips.put(result.getIP(), oldIPs.get(result.getIP()));
- }
- }
-
- cp.setLayout(new BorderLayout());
- JPanel leftPanel = new JPanel();
- leftPanel.setLayout(new BorderLayout());
- final JPanel ipsPanel = new JPanel();
- ipsPanel.setBorder(new TitledBorder("Show IPs"));
- ipsPanel.setLayout(new BoxLayout(ipsPanel, BoxLayout.Y_AXIS));
- if (ips.keySet().size() == 0) {
- ipsPanel.add(new JLabel(" "));
- }
- else {
- JPanel tmpPanel = new JPanel();
- tmpPanel.setBorder(new TitledBorder("select IPs"));
- JButton allButton = new JButton("all");
- allButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- for (Component component : ipsPanel.getComponents()) {
- JCheckBox checkBox = (JCheckBox) component;
- checkBox.setSelected(true);
- }
- }
- });
- allButton.setPreferredSize(new Dimension(55, 20));
- JButton noneButton = new JButton("none");
- noneButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- for (Component component : ipsPanel.getComponents()) {
- JCheckBox checkBox = (JCheckBox) component;
- checkBox.setSelected(false);
- }
- }
- });
- noneButton.setPreferredSize(new Dimension(70, 20));
- tmpPanel.add(allButton);
- tmpPanel.add(noneButton);
- leftPanel.add(tmpPanel, BorderLayout.SOUTH);
- }
- for (String ip : ips.keySet()) {
- JCheckBox checkBox = new JCheckBox(ip, ips.get(ip) == 1) {
- private static final long serialVersionUID =
1L;
-
- public void setSelected(boolean value) {
- super.setSelected(value);
- fireActionPerformed(new ActionEvent(FilterFrame.this,
- ActionEvent.ACTION_PERFORMED,
- ""));
- }
- };
- checkBox.addActionListener( new IPCheckBoxActionListener(checkBox, ip, disabled));
- ipsPanel.add(checkBox);
- }
- leftPanel.add(new JScrollPane(ipsPanel));
- cp.add(leftPanel, BorderLayout.WEST);
-
- JPanel applyPanel = new JPanel();
- JButton applyButton = new JButton("Apply");
- applyButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- mainWindow.rebuildResultsList();
- }
- });
- applyPanel.add(applyButton);
- cp.add(applyPanel, BorderLayout.SOUTH);
-
- JPanel optPanel = new JPanel();
- optPanel.setLayout(new BoxLayout(optPanel, BoxLayout.Y_AXIS));
- String[] optStrings = {"no", "yes", "both"};
-
- JComboBox mismatchBox = new JComboBox(optStrings);
- mismatchBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- mismatchFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("mismatchFilter", Integer.toString(mismatchFilter));
- }
- });
-
- mismatchFilter = Integer.parseInt(mainWindow.getProperties().getProperty("mismatchFilter", "2"));
- mismatchBox.setSelectedIndex(mismatchFilter);
- JPanel horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("Mismatch: "));
- horizontalPanel.add(mismatchBox);
- optPanel.add(horizontalPanel);
-
- JComboBox cableFaultBox = new JComboBox(optStrings);
- cableFaultBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- cableFaultFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("cableFaultFilter", Integer.toString(cableFaultFilter));
- }
- });
-
- cableFaultFilter = Integer.parseInt(mainWindow.getProperties().getProperty("cableFaultFilter", "2"));
- cableFaultBox.setSelectedIndex(cableFaultFilter);
- horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("Cable fault: "));
- horizontalPanel.add(cableFaultBox);
- optPanel.add(horizontalPanel);
-
- JComboBox congestionBox = new JComboBox(optStrings);
- congestionBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- congestionFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("congestionFilter", Integer.toString(congestionFilter));
- }
- });
-
- congestionFilter = Integer.parseInt(mainWindow.getProperties().getProperty("congestionFilter", "2"));
- congestionBox.setSelectedIndex(congestionFilter);
- horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("Congestion: "));
- horizontalPanel.add(congestionBox);
- optPanel.add(horizontalPanel);
-
- JComboBox duplexBox = new JComboBox(optStrings);
- duplexBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- duplexFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("duplexFilter", Integer.toString(duplexFilter));
- }
- });
-
- duplexFilter = Integer.parseInt(mainWindow.getProperties().getProperty("duplexFilter", "2"));
- duplexBox.setSelectedIndex(duplexFilter);
- horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("Duplex: "));
- horizontalPanel.add(duplexBox);
- optPanel.add(horizontalPanel);
-
- JComboBox newCongestionBox = new JComboBox(optStrings);
- newCongestionBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- newCongestionFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("newCongestionFilter",
- Integer.toString(newCongestionFilter));
- }
- });
-
- newCongestionFilter=Integer.parseInt(mainWindow.getProperties().getProperty("newCongestionFilter","2"));
- newCongestionBox.setSelectedIndex(newCongestionFilter);
- horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("New congestion: "));
- horizontalPanel.add(newCongestionBox);
- optPanel.add(horizontalPanel);
-
- JComboBox initialPeakSpeedBox = new JComboBox(new String[] {"n/a", "equal", "greater", "less", "all"});
- initialPeakSpeedBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- initialPeakSpeedFilter = ((JComboBox) e.getSource()).getSelectedIndex();
- mainWindow.getProperties().setProperty("initialPeakSpeedFilter",
- Integer.toString(initialPeakSpeedFilter));
- }
- });
-
- initialPeakSpeedFilter=Integer.parseInt(mainWindow.getProperties().getProperty("initialPeakSpeedFilter","4"));
- initialPeakSpeedBox.setSelectedIndex(initialPeakSpeedFilter);
- horizontalPanel = new JPanel();
- horizontalPanel.setLayout(new BoxLayout(horizontalPanel, BoxLayout.X_AXIS));
- horizontalPanel.add(new JLabel("Initial peak speed: "));
- horizontalPanel.add(initialPeakSpeedBox);
- optPanel.add(horizontalPanel);
-
- JPanel tmpPanel = new JPanel();
- tmpPanel.add(new JScrollPane(optPanel));
- cp.add(tmpPanel);
-
- validate();
- cp.repaint();
- }
-
- class IPCheckBoxActionListener implements ActionListener {
- private JCheckBox checkBox;
- private String ip;
- private Collection<String> disabled;
-
- IPCheckBoxActionListener(JCheckBox checkBox, String ip, Collection<String> disabled) {
- this.checkBox = checkBox;
- this.ip = ip;
- this.disabled = disabled;
- }
-
- public void actionPerformed(ActionEvent e) {
- if (checkBox.isSelected()) {
- ips.put(ip, 1);
- disabled.remove(ip);
- }
- else {
- ips.put(ip, 0);
- if (!disabled.contains(ip)) {
- disabled.add(ip);
- }
- }
- StringBuffer newDisabled = new StringBuffer();
- boolean first = true;
- for (String ip : disabled) {
- if (!first) {
- newDisabled.append(",");
- }
- newDisabled.append(ip);
- first = false;
- }
- mainWindow.getProperties().setProperty("disabled", newDisabled.toString());
- }
- }
-}
=======================================
--- /branches/AppletIssue92/janalyze/src/Helpers.java Tue Nov 13 19:16:15 2007 UTC
+++ /dev/null
@@ -1,7 +0,0 @@
-
-public class Helpers {
- public static String formatDouble(double val, int precision) {
- String format_string = "%1$." + precision + "f";
- return String.format(format_string, val);
- }
-}
=======================================
--- /branches/AppletIssue92/janalyze/src/JAnalyze.java Tue Nov 13 19:16:15 2007 UTC
+++ /dev/null
@@ -1,681 +0,0 @@
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.ListSelectionModel;
-import javax.swing.UIManager;
-import javax.swing.JFileChooser;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.JTextArea;
-
-import java.awt.BorderLayout;
-import java.awt.Container;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.util.Collection;
-import java.util.Vector;
-import java.util.StringTokenizer;
-import java.util.Properties;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import de.progra.charting.DefaultChart;
-import de.progra.charting.model.EditableChartDataModel;
-import de.progra.charting.render.LineChartRenderer;
-import de.progra.charting.swing.ChartPanel;
-
-public class JAnalyze extends JFrame
-{
- private static final long serialVersionUID = 1L;
-
- JMenuBar menuBar = new JMenuBar();
- JMenu fileMenu = new JMenu("File");
- JMenu optionsMenu = new JMenu("Options");
- JMenu actionsMenu = new JMenu("Actions");
- JMenuItem exitMenuItem = new JMenuItem("Exit");
- JMenuItem loadMenuItem = new JMenuItem("Load");
- JMenuItem loadDBMenuItem = new JMenuItem("Load from DB");
- JMenuItem filterMenuItem = new JMenuItem("Filter");
- JMenuItem snaplogMenuItem = new JMenuItem("Snaplogs");
- JMenuItem dbConfMenuItem = new JMenuItem("DB conf");
- JMenu snaplogsMenu = new JMenu("Snaplogs");
- JMenuItem viewSnaplogMenuItem = new JMenuItem("View");
- JMenuItem plotSnaplogMenuItem = new JMenuItem("Plot");
- JMenuItem plotSnaplogCWNDMenuItem = new JMenuItem("Plot CWND");
- JMenu tcpdumpsMenu = new JMenu("Tcpdumps");
- JMenuItem viewTcpdumpMenuItem = new JMenuItem("View");
- JMenuItem plotTcpdumpMenuItem = new JMenuItem("Plot");
- JMenu cputimesMenu = new JMenu("Cputimes");
- JMenuItem viewCputimeMenuItem = new JMenuItem("View");
- JFileChooser fc;
- final Properties properties = new Properties();
- final File propertyFile = new File(System.getenv("HOME") + "/.jAnalyze.properties");
-
- FilterFrame filterFrame = null;
- DBConfFrame dbConfFrame = null;
- SnaplogFrame snaplogFrame = null;
-
- JPanel listPanel = new JPanel();
- JPanel infoPanel = new JPanel();
-
- private boolean stopLoading;
-
- private Collection<ResultsContainer> results = new Vector<ResultsContainer>();
-
- public JAnalyze()
- {
- // Title
- setTitle("JAnalyze v0.9.1");
-
- try {
- properties.load(new FileInputStream(propertyFile));
- }
- catch (FileNotFoundException e) {
- // do nothing
- }
- catch (IOException e) {
- // do nothing
- }
-
- dbConfFrame = new DBConfFrame(this);
- snaplogFrame = new SnaplogFrame(this);
- filterFrame = new FilterFrame(JAnalyze.this, results);
-
- addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent event) {
- try {
- properties.store(new FileOutputStream(propertyFile), "JAnalyze properties file");
- }
- catch (FileNotFoundException e) {
- // do nothing
- }
- catch (IOException e) {
- // do nothing
- }
- }
- });
-
- // Menu
- loadMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (fc == null) {
- fc = new JFileChooser(new File(getProperties().getProperty("loadDir", "/usr/local/ndt/")));
- }
- int returnVal = fc.showOpenDialog(JAnalyze.this);
- getProperties().setProperty("loadDir", fc.getCurrentDirectory().getAbsolutePath());
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- try {
- File file = fc.getSelectedFile();
- JFrame loadingFrame = new LoadingFrame(file.getAbsolutePath(), JAnalyze.this);
- loadingFrame.setSize(150, 100);
- loadingFrame.setVisible(true);
- }
- catch (Exception exc) {
- System.out.println("Loading of the web100srv.log failed!");
- exc.printStackTrace();
- }
- }
- }
- });
- fileMenu.add(loadMenuItem);
- loadDBMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFrame loadingFrame = new LoadingDBFrame(JAnalyze.this);
- loadingFrame.setSize(150, 100);
- loadingFrame.setVisible(true);
- }
- });
- fileMenu.add(loadDBMenuItem);
- fileMenu.addSeparator();
- exitMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- try {
- properties.store(new FileOutputStream(propertyFile), "JAnalyze properties file");
- }
- catch (FileNotFoundException e) {
- // do nothing
- }
- catch (IOException e) {
- // do nothing
- }
- System.exit(0);
- }
- });
- fileMenu.add(exitMenuItem);
- menuBar.add(fileMenu);
-
- filterMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- filterFrame.setVisible(true);
- }
- });
- optionsMenu.add(filterMenuItem);
- dbConfMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- dbConfFrame.setVisible(true);
- }
- });
- optionsMenu.add(dbConfMenuItem);
- snaplogMenuItem.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- snaplogFrame.setVisible(true);
- }
- });
- optionsMenu.add(snaplogMenuItem);
-
- menuBar.add(optionsMenu);
-
- viewSnaplogMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- String snaplogData = getSnaplogData(file.getAbsolutePath(), null, 0, false);
- JTextArea area = new JTextArea(snaplogData);
- area.setEditable(false);
- JFrame frame = new JFrame("Snaplog variables");
- frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
- frame.setSize(800, 600);
- frame.setVisible(true);
- }
- }
- });
- snaplogsMenu.add(viewSnaplogMenuItem);
- plotSnaplogMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- plotSnaplog(file.getAbsolutePath());
- }
- }
- });
- snaplogsMenu.add(plotSnaplogMenuItem);
- plotSnaplogCWNDMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- plotSnaplogCWND(file.getAbsolutePath());
- }
- }
- });
- snaplogsMenu.add(plotSnaplogCWNDMenuItem);
- actionsMenu.add(snaplogsMenu);
- viewTcpdumpMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- String tcpdumpData = getTcpdumpData(file.getAbsolutePath());
- JTextArea area = new JTextArea(tcpdumpData);
- area.setEditable(false);
- JFrame frame = new JFrame("tcpdump trace");
- frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
- frame.setSize(800, 600);
- frame.setVisible(true);
- }
- }
- });
- tcpdumpsMenu.add(viewTcpdumpMenuItem);
- plotTcpdumpMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- plotTcpdumpS(file.getAbsolutePath());
- }
- }
- });
- tcpdumpsMenu.add(plotTcpdumpMenuItem);
- actionsMenu.add(tcpdumpsMenu);
- viewCputimeMenuItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- plotCputime(file.getAbsolutePath());
- }
- }
- });
- cputimesMenu.add(viewCputimeMenuItem);
- actionsMenu.add(cputimesMenu);
-
- menuBar.add(actionsMenu);
-
- setJMenuBar(menuBar);
-
- Container cp = getContentPane();
- cp.setLayout(new BorderLayout());
- listPanel.setLayout(new BorderLayout());
- cp.add(listPanel, BorderLayout.WEST);
- infoPanel.setLayout(new BorderLayout());
- cp.add(infoPanel);
-
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- setSize(900, 770);
- setVisible(true);
- }
-
- protected void loadDB(LoadingDBFrame frame) throws SQLException
- {
- stopLoading = false;
- try {
- Class.forName (dbConfFrame.getDriver()).newInstance ();
- }
- catch (Exception e) {
- System.out.println("Failed to load mysql jdbc driver: " + e.getMessage());
- }
- Connection con = DriverManager.getConnection(dbConfFrame.getDSN(),
- dbConfFrame.getUID(), dbConfFrame.getPWD());
-
- Statement stmt = con.createStatement();
- ResultSet rs = stmt.executeQuery("SELECT * FROM ndt_test_results;");
- Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
- while (!stopLoading && rs.next()) {
- ResultsContainer result = new ResultsContainer(this);
- try {
- result.parseDBRow(rs);
- }
- catch (SQLException e) {
- continue;
- }
- result.calculate();
- newResults.add(result);
- frame.loadedResult();
- }
- if (stopLoading) {
- return;
- }
- results.clear();
- results.addAll(newResults);
- filterFrame.resultsChange();
- rebuildResultsList();
- }
-
- protected void loadWeb100srvLog(String filename, LoadingFrame frame) throws FileNotFoundException, IOException
- {
- stopLoading = false;
-// System.out.println("Loading file: " + filename);
- BufferedReader br = new BufferedReader(new FileReader(filename));
- String line;
- ResultsContainer result = new ResultsContainer(this);
- Collection<ResultsContainer> newResults = new Vector<ResultsContainer>();
- while (!stopLoading && (line = br.readLine()) != null) {
- if (line.startsWith("spds")) {
- result.parseSpds(line);
- continue;
- }
- if (line.startsWith("Running")) {
- result.parseRunAvg(line);
- continue;
- }
- if (line.startsWith("snaplog file:")) {
- result.parseSnaplogFilename(line);
- continue;
- }
- if (line.startsWith("c2s_snaplog file:")) {
- result.parseC2sSnaplogFilename(line);
- continue;
- }
- if (line.startsWith("cputime trace file:")) {
- result.parseCputimeFilename(line);
- continue;
- }
- if (line.contains("port")) {
- result = new ResultsContainer(this);
- result.parsePort(line);
- continue;
- }
- if (line.contains(",")) {
- if ((result != null) && result.parseWeb100Var(line)) {
- result.calculate();
- newResults.add(result);
- result = null;
- frame.loadedResult();
- }
- }
- }
- if (stopLoading) {
- return;
- }
- results.clear();
- results.addAll(newResults);
- filterFrame.resultsChange();
- rebuildResultsList();
- }
-
- protected String getSnaplogData(String snaplogFilename, String variables, int numOfLines, boolean trim) {
- if (snaplogFilename == null) {
- return "";
- }
- String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-tm", variables == null ?
- snaplogFrame.getVariables() : variables,
- snaplogFilename.startsWith("/") ? snaplogFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + snaplogFilename :
- snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
- Process genplotProcess;
- try {
- genplotProcess = Runtime.getRuntime().exec(cmdarray);
- }
- catch (IOException e) {
- System.out.println(e);
- return null;
- }
- BufferedReader in = new BufferedReader(new InputStreamReader(genplotProcess.getInputStream()));
- StringBuffer toReturn = new StringBuffer();
- try {
- int counter = 1;
- if (trim) {
- in.readLine();in.readLine();in.readLine();
- }
- String line = in.readLine();
- while (line != null && counter != numOfLines) {
- toReturn.append(line + "\n");
- line = in.readLine();
- counter += 1;
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- genplotProcess.destroy();
- return toReturn.toString();
- }
-
- protected boolean checkTcpDump(String ndttraceFilename) {
- File file = new File(snaplogFrame.getSnaplogs(), ndttraceFilename);
- return file.exists() && file.canRead();
- }
-
- protected String getTcpdumpData(String ndttraceFilename) {
- if (ndttraceFilename == null) {
- return "";
- }
- String[] cmdarray = new String[] {snaplogFrame.getTcptrace(), "-l",
- ndttraceFilename.startsWith("/") ? ndttraceFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + ndttraceFilename :
- snaplogFrame.getSnaplogs() + "/" + ndttraceFilename};
- Process tcptraceProcess;
- try {
- tcptraceProcess = Runtime.getRuntime().exec(cmdarray);
- }
- catch (IOException e) {
- System.out.println(e);
- return null;
- }
- BufferedReader in = new BufferedReader(new InputStreamReader(tcptraceProcess.getInputStream()));
- StringBuffer toReturn = new StringBuffer();
- try {
- String line = in.readLine();
- while (line != null) {
- toReturn.append(line + "\n");
- line = in.readLine();
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- tcptraceProcess.destroy();
- return toReturn.toString();
-
- }
-
- protected void plotTcpdumpS(String ndttraceFilename) {
- if (ndttraceFilename == null) {
- return;
- }
- String[] cmdarray = new String[] {snaplogFrame.getTcptrace(), "-S",
- ndttraceFilename.startsWith("/") ? ndttraceFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + ndttraceFilename :
- snaplogFrame.getSnaplogs() + "/" + ndttraceFilename};
- String[] cmdarray2 = new String[] {snaplogFrame.getXplot(), "a2b_tsg.xpl"};
- String[] cmdarray3 = new String[] {snaplogFrame.getXplot(), "b2a_tsg.xpl"};
- try {
- Runtime.getRuntime().exec(cmdarray);
- Thread.sleep(1000);
- Runtime.getRuntime().exec(cmdarray2);
- Runtime.getRuntime().exec(cmdarray3);
- }
- catch (InterruptedException e) {
- System.out.println(e);
- }
- catch (IOException e) {
- System.out.println(e);
- }
- }
-
-
- protected void plotSnaplog(String snaplogFilename) {
- if (snaplogFilename == null) {
- return;
- }
- String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-m", snaplogFrame.getVariables(),
- snaplogFilename.startsWith("/") ? snaplogFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + snaplogFilename :
- snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
- String[] cmdarray2 = new String[] {snaplogFrame.getXplot(),
- "User Defined" +
- (snaplogFilename.substring(snaplogFilename.lastIndexOf(".")).length() > 6 ?
- snaplogFilename.substring(
- snaplogFilename.substring(0, snaplogFilename.lastIndexOf(".")).lastIndexOf("."),
- snaplogFilename.lastIndexOf(".")) :
- snaplogFilename.substring(snaplogFilename.lastIndexOf("."))) + ".xpl"};
- try {
- Runtime.getRuntime().exec(cmdarray);
- Thread.sleep(1000);
- Runtime.getRuntime().exec(cmdarray2);
- }
- catch (InterruptedException e) {
- System.out.println(e);
- }
- catch (IOException e) {
- System.out.println(e);
- }
- }
-
- protected void plotSnaplogCWND(String snaplogFilename) {
- if (snaplogFilename == null) {
- return;
- }
- String[] cmdarray = new String[] {snaplogFrame.getGenplot(), "-C",
- snaplogFilename.startsWith("/") ? snaplogFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + snaplogFilename :
- snaplogFrame.getSnaplogs() + "/" + snaplogFilename};
- String[] cmdarray2 = new String[] {snaplogFrame.getXplot(),
- "CurCwnd" +
- (snaplogFilename.substring(snaplogFilename.lastIndexOf(".")).length() > 6 ?
- snaplogFilename.substring(
- snaplogFilename.substring(0, snaplogFilename.lastIndexOf(".")).lastIndexOf("."),
- snaplogFilename.lastIndexOf(".")) :
- snaplogFilename.substring(snaplogFilename.lastIndexOf("."))) + ".xpl"};
- try {
- Runtime.getRuntime().exec(cmdarray);
- Thread.sleep(1000);
- Runtime.getRuntime().exec(cmdarray2);
- }
- catch (InterruptedException e) {
- System.out.println(e);
- }
- catch (IOException e) {
- System.out.println(e);
- }
- }
-
- protected void plotCputime(String cputraceFilename) {
- if (cputraceFilename == null) {
- return;
- }
- String fileName = cputraceFilename.startsWith("/") ? cputraceFilename :
- snaplogFrame.getSnaplogs().endsWith("/") ?
- snaplogFrame.getSnaplogs() + cputraceFilename :
- snaplogFrame.getSnaplogs() + "/" + cputraceFilename;
- JFileChooser chooser = new JFileChooser(new File(snaplogFrame.getSnaplogs()));
- BufferedReader br = null;
- try {
- br = new BufferedReader(new FileReader(fileName));
- }
- catch (FileNotFoundException exc) {
- int returnVal = chooser.showOpenDialog(JAnalyze.this);
-
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- try {
- br = new BufferedReader(new FileReader(file.getAbsolutePath()));
- }
- catch (Exception ex) {
- System.out.println("Loading of the cputime file: " + file.getAbsolutePath() + " failed!");
- ex.printStackTrace();
- return;
- }
- }
- else {
- return;
- }
- }
- String line;
- Vector<Double> time = new Vector<Double>();
- Vector<Double> userTime = new Vector<Double>();
- Vector<Double> systemTime = new Vector<Double>();
- Vector<Double> cuserTime = new Vector<Double>();
- Vector<Double> csystemTime = new Vector<Double>();
- try {
- while ((line = br.readLine()) != null) {
- StringTokenizer st = new StringTokenizer(line.trim(), " ");
- time.add(Double.parseDouble(st.nextToken()));
- userTime.add(Double.parseDouble(st.nextToken()));
- systemTime.add(Double.parseDouble(st.nextToken()));
- cuserTime.add(Double.parseDouble(st.nextToken()));
- csystemTime.add(Double.parseDouble(st.nextToken()));
- }
- br.close();
- }
- catch (IOException exc) {
- exc.printStackTrace();
- return;
- }
- double[][] model = new double[4][time.size()];
- double[] columns = new double[time.size()];
- for (int i = 0; i < time.size(); ++i) {
- model[0][i] = userTime.elementAt(i);
- model[1][i] = systemTime.elementAt(i);
- model[2][i] = cuserTime.elementAt(i);
- model[3][i] = csystemTime.elementAt(i);
- columns[i] = time.elementAt(i);
- }
- String[] rows = { "user time", "system time",
- "user time of dead children", "system time of dead children" };
- String title = "Cputime usage: " + cputraceFilename;
- EditableChartDataModel data = new EditableChartDataModel(model, columns, rows);
- ChartPanel panel = new ChartPanel(data, title, DefaultChart.LINEAR_X_LINEAR_Y);
- panel.addChartRenderer(new LineChartRenderer(panel.getCoordSystem(), data), 1);
-
- JFrame frame = new JFrame(title);
- frame.getContentPane().add(panel, BorderLayout.CENTER);
- frame.setSize(800, 600);
- frame.setVisible(true);
- }
-
-
- void rebuildResultsList() {
- listPanel.removeAll();
- infoPanel.removeAll();
- fillListPanel();
- }
-
- private void fillListPanel() {
- final JList list;
- list = new JList(new ResultsList(filterFrame.getResults()));
- list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- list.addMouseListener(new
- MouseAdapter() {
-
- public void mousePressed(MouseEvent e) {
- int index = list.locationToIndex(e.getPoint());
- list.setSelectedIndex(index);
- }
-
- public void mouseReleased(MouseEvent e) {
- int index = list.locationToIndex(e.getPoint());
- list.setSelectedIndex(index);
- }
- });
- list.addListSelectionListener(new
- ListSelectionListener() {
-
- public void valueChanged(ListSelectionEvent arg0) {
- showResultInfo((ResultsContainer)
list.getSelectedValue());
- }
-
- private void showResultInfo(ResultsContainer result) {
- infoPanel.removeAll();
- infoPanel.add(result.getInfoPane());
- infoPanel.revalidate();
- }
- });
- JPanel tmpPanel = new JPanel();
- tmpPanel.add(new JLabel("Shown results: " + list.getModel().getSize() + "/" + results.size()));
- listPanel.add(tmpPanel, BorderLayout.NORTH);
- listPanel.add(new JScrollPane(list));
- listPanel.revalidate();
- listPanel.repaint();
- infoPanel.revalidate();
- infoPanel.repaint();
- }
-
- public static void main(String args[])
- {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- } catch (Exception ex) { ex.printStackTrace(); }
- new JAnalyze();
- }
-
- public void stopLoading() {
- stopLoading = true;
- }
-
- public Properties getProperties() {
- return properties;
- }
-}
=======================================
--- /branches/AppletIssue92/janalyze/src/LoadingDBFrame.java Tue Nov 13 19:16:15 2007 UTC
+++ /dev/null
@@ -1,66 +0,0 @@
-import java.awt.Container;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-//import javax.swing.JProgressBar;
-import javax.swing.WindowConstants;
-
-public class LoadingDBFrame extends JFrame {
-
- private static final long serialVersionUID = 1L;
-
- private JButton cancelButton = new JButton("Cancel");
-// private JProgressBar progressBar;
- private int loaded = 0;
- private JLabel loadedLabel = new JLabel("Loaded results: " + loaded);
-
- public LoadingDBFrame(final JAnalyze janalyze) {
- super("Loading...");
-
- final SwingWorker worker = new SwingWorker() {
- public Object construct() {
- try {
- janalyze.loadDB(LoadingDBFrame.this);
- }
- catch (Exception exc) {
- System.out.println("Loading of the DB data failed!");
- exc.printStackTrace();
- }
- return null;
- }
- public void finished() {
- LoadingDBFrame.this.setVisible(false);
- LoadingDBFrame.this.dispose();
- }
- };
-
-// progressBar = new JProgressBar();
-// progressBar.setStringPainted(true);
- Container cp = getContentPane();
- cp.setLayout(new BoxLayout(cp, BoxLayout.PAGE_AXIS)) ;
- cp.add(loadedLabel);
-// cp.add(progressBar);
- cp.add(cancelButton);
-
- cancelButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- worker.interrupt();
- janalyze.stopLoading();
- LoadingDBFrame.this.setVisible(false);
- LoadingDBFrame.this.dispose();
- }
- });
-
- setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
- worker.start();
- }
-
- public void loadedResult() {
- loaded++;
- loadedLabel.setText("Loaded results: " + loaded);
- }
-}
=======================================
***Additional files exist in this changeset.***
- [ndt-dev] [ndt] r880 committed - Introduced proper package naming to Admin and jAnalyze components, ndt, 02/07/2014
Archive powered by MHonArc 2.6.16.