Index: /trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java	(revision 2600)
+++ /trunk/test/functional/org/openstreetmap/josm/fixtures/JOSMFixture.java	(revision 2600)
@@ -0,0 +1,72 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.fixtures;
+
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.text.MessageFormat;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DataSetMergerTest;
+import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.io.OsmApi;
+
+public class JOSMFixture {
+    static private final Logger logger = Logger.getLogger(JOSMFixture.class.getName());
+
+    static public JOSMFixture createUnitTestFixture() {
+        return new JOSMFixture("/test-unit-env.properties");
+    }
+
+    static public JOSMFixture createFunctionalTestFixture() {
+        return new JOSMFixture("/test-functional-env.properties");
+    }
+
+    private Properties testProperties;
+    private String testPropertiesResourceName;
+
+    public JOSMFixture(String testPropertiesResourceName) {
+        this.testPropertiesResourceName = testPropertiesResourceName;
+    }
+
+    public void init() {
+        testProperties = new Properties();
+
+        // load properties
+        //
+        try {
+            testProperties.load(DataSetMergerTest.class.getResourceAsStream(testPropertiesResourceName));
+        } catch(Exception e){
+            logger.log(Level.SEVERE, MessageFormat.format("failed to load property file ''{0}''", testPropertiesResourceName));
+            fail(MessageFormat.format("failed to load property file ''{0}''", testPropertiesResourceName));
+        }
+
+        // check josm.home
+        //
+        String josmHome = testProperties.getProperty("josm.home");
+        if (josmHome == null) {
+            fail(MessageFormat.format("property ''{0}'' not set in test environment", "josm.home"));
+        } else {
+            File f = new File(josmHome);
+            if (! f.exists() || ! f.canRead()) {
+                fail(MessageFormat.format("property ''{0}'' points to ''{1}'' which is either not existing or not readable", "josm.home", josmHome));
+            }
+        }
+        System.setProperty("josm.home", josmHome);
+        Main.pref.init(false);
+
+        // init projection
+        Main.proj = new Mercator();
+
+        // make sure we don't upload to or test against production
+        //
+        String url = OsmApi.getOsmApi().getBaseUrl().toLowerCase().trim();
+        if (url.startsWith("http://www.openstreetmap.org")
+                || url.startsWith("http://api.openstreetmap.org")) {
+            fail(MessageFormat.format("configured server url ''{0}'' seems to be a productive url, aborting.", url));
+        }
+    }
+}
Index: /trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java	(revision 2599)
+++ /trunk/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java	(revision 2600)
@@ -32,4 +32,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.gui.io.UploadStrategy;
 import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -125,5 +126,5 @@
         OsmServerWriter writer = new OsmServerWriter();
         Changeset cs = new Changeset();
-        writer.uploadOsm(UploadStrategySpecification.createSingleRequestUploadStrategy(), primitives,cs,NullProgressMonitor.INSTANCE);
+        writer.uploadOsm(new UploadStrategySpecification().setStrategy(UploadStrategy.SINGLE_REQUEST_STRATEGY), primitives,cs,NullProgressMonitor.INSTANCE);
         OsmApi.getOsmApi().closeChangeset(cs, NullProgressMonitor.INSTANCE);
     }
Index: /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 2599)
+++ /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 2600)
@@ -33,4 +33,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.projection.Mercator;
+import org.openstreetmap.josm.gui.io.UploadStrategy;
 import org.openstreetmap.josm.gui.io.UploadStrategySpecification;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
@@ -129,5 +130,5 @@
         OsmServerWriter writer = new OsmServerWriter();
         Changeset cs  = new Changeset();
-        writer.uploadOsm(UploadStrategySpecification.createSingleRequestUploadStrategy(), primitives, cs, NullProgressMonitor.INSTANCE);
+        writer.uploadOsm(new UploadStrategySpecification().setStrategy(UploadStrategy.SINGLE_REQUEST_STRATEGY), primitives, cs, NullProgressMonitor.INSTANCE);
         OsmApi.getOsmApi().closeChangeset(cs, NullProgressMonitor.INSTANCE);
     }
Index: /trunk/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java	(revision 2599)
+++ /trunk/test/functional/org/openstreetmap/josm/io/UploadStrategySelectionPanelTest.java	(revision 2600)
@@ -3,26 +3,59 @@
 
 import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 
 import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
 
+import org.openstreetmap.josm.fixtures.JOSMFixture;
 import org.openstreetmap.josm.gui.io.UploadStrategySelectionPanel;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 
 public class UploadStrategySelectionPanelTest extends JFrame {
 
-    private UploadStrategySelectionPanel pnl;
+    private UploadStrategySelectionPanel uploadStrategySelectionPanel;
 
     protected void build()  {
         getContentPane().setLayout(new BorderLayout());
-        pnl = new UploadStrategySelectionPanel();
-        getContentPane().add(pnl, BorderLayout.CENTER);
+        uploadStrategySelectionPanel = new UploadStrategySelectionPanel();
+        getContentPane().add(uploadStrategySelectionPanel, BorderLayout.CENTER);
+        getContentPane().add(buildControlPanel(), BorderLayout.SOUTH);
         setSize(400,400);
     }
 
+
+    protected JPanel buildControlPanel() {
+        JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
+        pnl.add(new JLabel("Num objects:"));
+        final JTextField tf;
+        pnl.add(tf = new JTextField(8));
+        tf.addActionListener(
+                new ActionListener() {
+                    public void actionPerformed(ActionEvent arg0) {
+                        int n = 0;
+                        try {
+                            n = Integer.parseInt(tf.getText());
+                        } catch(NumberFormatException e) {
+                            e.printStackTrace();
+                            return;
+                        }
+                        uploadStrategySelectionPanel.setNumUploadedObjects(n);
+                    }
+                }
+        );
+        return pnl;
+    }
     public UploadStrategySelectionPanelTest() {
         build();
-        pnl.setNumUploadedObjects(1500);
+        uploadStrategySelectionPanel.setNumUploadedObjects(51000);
     }
 
-    public static void main(String args[]) {
+    public static void main(String args[]) throws OsmApiInitializationException {
+        JOSMFixture josmFixture = JOSMFixture.createFunctionalTestFixture();
+        OsmApi.getOsmApi().initialize(NullProgressMonitor.INSTANCE);
         new UploadStrategySelectionPanelTest().setVisible(true);
     }
