You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2008/06/15 15:27:11 UTC
svn commit: r667959 [2/2] - in /directory/studio/trunk:
connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/
ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/jobs/
rcp/ test-integration-ui/ test-...
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java?rev=667959&r1=667958&r2=667959&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java Sun Jun 15 06:27:10 2008
@@ -29,8 +29,6 @@
import net.sf.swtbot.widgets.SWTBotTree;
import org.apache.directory.server.unit.AbstractServerTest;
-import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
-import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
/**
@@ -176,7 +174,7 @@
tree.select( "sn" );
bot.text( "" ).setText( "test" );
tree.select( "cn" );
-
+
// TODO: with SWTBot 1.2 we could use the tree.click() method!
// workaround to apply the new value
bot.button( "< Back" ).click();
@@ -213,76 +211,4 @@
} );
}
-
- /**
- * Test to create multiple entries.
- *
- * @throws Exception the exception
- */
- public void testCreateMultipleEntries() throws Exception
- {
- SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
-
- BrowserCommonActivator.getDefault().getPreferenceStore().setValue(
- BrowserCommonConstants.PREFERENCE_BROWSER_ENABLE_FOLDING, false );
-
- for ( int i = 0; i < 25; i++ )
- {
- createEntry( browserTree, "testCreateMultipleEntries" + i );
- }
- }
-
-
- private void createEntry( final SWTBotTree browserTree, final String name ) throws Exception
- {
- SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
-
- SWTBotMenu contextMenu = browserTree.contextMenu( "New Entry..." );
- contextMenu.click();
-
- bot.radio( "Create entry from scratch" ).click();
- bot.button( "Next >" ).click();
-
- bot.table( 0 ).select( "organization" );
- bot.button( "Add" ).click();
- bot.button( "Next >" ).click();
-
- SWTBotCombo typeCombo = bot.comboBox( "" );
- typeCombo.setText( "o" );
- SWTBotText valueText = bot.text( "" );
- valueText.setText( name );
- bot.button( "Next >" ).click();
-
- // wait for check that entry doesn't exist yet
- bot.waitUntil( new DefaultCondition()
- {
- public boolean test() throws Exception
- {
- return bot.tree( 0 ) != null;
- }
-
-
- public String getFailureMessage()
- {
- return "Could not find widget";
- }
- } );
- bot.button( "Finish" ).click();
-
- // wait till entry is created and selected in the tree
- bot.waitUntil( new DefaultCondition()
- {
- public boolean test() throws Exception
- {
- return browserTree.selection().get( 0 ).get( 0 ).equals( "o=" + name );
- }
-
-
- public String getFailureMessage()
- {
- return "Could not find widget";
- }
- } );
- }
-
}
Added: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreparationTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreparationTest.java?rev=667959&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreparationTest.java (added)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreparationTest.java Sun Jun 15 06:27:10 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.studio.test.integration.ui;
+
+
+import net.sf.swtbot.eclipse.finder.SWTEclipseBot;
+
+import org.apache.directory.server.unit.AbstractServerTest;
+
+
+/**
+ * Test preparation.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class PreparationTest extends AbstractServerTest
+{
+
+ /**
+ * Closes the welcome view.
+ */
+ public void testCloseWelcomeView()
+ {
+ try
+ {
+ SWTEclipseBot bot = new SWTEclipseBot();
+ bot.view( "Welcome" ).close();
+ }
+ catch ( Exception e )
+ {
+ }
+ }
+
+}
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java?rev=667959&r1=667958&r2=667959&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java Sun Jun 15 06:27:10 2008
@@ -60,10 +60,10 @@
*
* @throws Exception the exception
*/
- public static void openLdapPerspective( SWTEclipseBot bot ) throws Exception
+ public static void openLdapPerspective( final SWTEclipseBot eBot ) throws Exception
{
// open "Open Perspective" dialog
- SWTBotMenu windowMenu = bot.menu( "Window" );
+ SWTBotMenu windowMenu = eBot.menu( "Window" );
windowMenu.click();
SWTBotMenu perspectiveMenu = windowMenu.menu( "Open Perspective" );
perspectiveMenu.click();
@@ -71,12 +71,69 @@
otherMenu.click();
// select "LDAP" perspective
- SWTBotTable table = bot.table();
+ SWTBotTable table = eBot.table();
table.select( "LDAP" );
// press "OK"
- SWTBotButton okButton = bot.button( "OK" );
+ SWTBotButton okButton = eBot.button( "OK" );
okButton.click();
+
+ // wait till Connections view become visible
+ eBot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ return eBot.view( "Connections" ) != null;
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "Could not find widget";
+ }
+ } );
+ }
+
+
+ /**
+ * Opens the Sleak (SWT leak) view.
+ *
+ * @param bot the bot
+ *
+ * @throws Exception the exception
+ */
+ public static void openSleakView( final SWTEclipseBot eBot ) throws Exception
+ {
+ // open "Show View" dialog
+ SWTBotMenu windowMenu = eBot.menu( "Window" );
+ windowMenu.click();
+ SWTBotMenu viewMenu = windowMenu.menu( "Show View" );
+ viewMenu.click();
+ SWTBotMenu otherMenu = viewMenu.menu( "Other..." );
+ otherMenu.click();
+
+ // select "Sleak"
+ SWTBotTree tree = eBot.tree();
+ SWTBotUtils.selectNode( eBot, tree, "SWT Tools", "Sleak" );
+
+ // press "OK"
+ SWTBotButton okButton = eBot.button( "OK" );
+ okButton.click();
+
+ // wait till Connections view become visible
+ eBot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ return eBot.view( "Sleak" ) != null;
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "Could not find widget";
+ }
+ } );
}
Added: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java?rev=667959&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java (added)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java Sun Jun 15 06:27:10 2008
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.studio.test.integration.ui;
+
+
+import net.sf.swtbot.eclipse.finder.SWTEclipseBot;
+import net.sf.swtbot.finder.UIThreadRunnable;
+import net.sf.swtbot.finder.UIThreadRunnable.IntResult;
+import net.sf.swtbot.wait.DefaultCondition;
+import net.sf.swtbot.widgets.SWTBotCombo;
+import net.sf.swtbot.widgets.SWTBotMenu;
+import net.sf.swtbot.widgets.SWTBotText;
+import net.sf.swtbot.widgets.SWTBotTree;
+
+import org.apache.directory.server.unit.AbstractServerTest;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.eclipse.swt.graphics.DeviceData;
+
+
+/**
+ * Tests allocation of SWT Resources.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class SwtResourcesTest extends AbstractServerTest
+{
+ private SWTEclipseBot bot;
+
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ bot = new SWTEclipseBot();
+ SWTBotUtils.openLdapPerspective( bot );
+ SWTBotUtils.openSleakView( bot );
+ SWTBotUtils.createTestConnection( bot, "SwtResourcesTest", ldapServer.getIpPort() );
+ }
+
+
+ protected void tearDown() throws Exception
+ {
+ SWTBotUtils.deleteTestConnections();
+ bot = null;
+ super.tearDown();
+ }
+
+
+ /**
+ * Test for DIRSTUDIO-319.
+ *
+ * Creates multiple entries using the New Entry wizard. Checks
+ * that we don't allocate too much SWT resources during the run.
+ *
+ * @throws Exception the exception
+ */
+ public void testSwtResourcesDelta() throws Exception
+ {
+ SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+
+ BrowserCommonActivator.getDefault().getPreferenceStore().setValue(
+ BrowserCommonConstants.PREFERENCE_BROWSER_ENABLE_FOLDING, false );
+
+ // run the new entry wizard once to ensure all SWT resources are created
+ createAndDeleteEntry( browserTree, "testSwtResourcesDelta" + 0 );
+
+ // remember the SWT objects before the run
+ int beforeObjectCount = getSwtObjectCount();
+
+ // now lets run the new entry wizard it several times
+ for ( int i = 1; i < 25; i++ )
+ {
+ createAndDeleteEntry( browserTree, "testSwtResourcesDelta" + i );
+
+ // update the status of SWT objects in the Sleak view
+ bot.view( "Sleak" ).show();
+ bot.button( "Snap" ).click();
+ browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+ }
+
+ // get the SWT objects after the run
+ int afterObjectCount = getSwtObjectCount();
+
+ // we expect not more than 10 additional SWT objects
+ assertTrue( "Too many SWT resources were allocated in testSwtResourcesDelta: before=" + beforeObjectCount
+ + ", after=" + afterObjectCount, afterObjectCount - beforeObjectCount < 10 );
+ }
+
+
+ /**
+ * Ensure that we have not allocated more the 1000 SWT resources
+ * during the complete test suite.
+ *
+ * 1000 is not a fix number but it is a good starting point.
+ *
+ * @throws Exception the exception
+ */
+ public void testSwtResourcesCount() throws Exception
+ {
+ int swtObjectCount = getSwtObjectCount();
+ assertTrue( "Too many SWT resources were allocated: " + swtObjectCount, swtObjectCount < 1000 );
+ }
+
+
+ private int getSwtObjectCount()
+ {
+ return UIThreadRunnable.syncExec( bot.getDisplay(), new IntResult()
+ {
+ public int run()
+ {
+ DeviceData info = bot.getDisplay().getDeviceData();
+ if ( !info.tracking )
+ {
+ fail( "To run this test options 'org.eclipse.ui/debug' and 'org.eclipse.ui/trace/graphics' must be true." );
+ }
+ return info.objects.length;
+ }
+ } );
+ }
+
+
+ private void createAndDeleteEntry( final SWTBotTree browserTree, final String name ) throws Exception
+ {
+ SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+
+ SWTBotMenu contextMenu = browserTree.contextMenu( "New Entry..." );
+ contextMenu.click();
+
+ bot.radio( "Create entry from scratch" ).click();
+ bot.button( "Next >" ).click();
+
+ bot.table( 0 ).select( "organization" );
+ bot.button( "Add" ).click();
+ bot.button( "Next >" ).click();
+
+ SWTBotCombo typeCombo = bot.comboBox( "" );
+ typeCombo.setText( "o" );
+ SWTBotText valueText = bot.text( "" );
+ valueText.setText( name );
+ bot.button( "Next >" ).click();
+
+ // wait for check that entry doesn't exist yet
+ bot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ return bot.tree( 0 ) != null;
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "Could not find widget";
+ }
+ } );
+ bot.button( "Finish" ).click();
+
+ // wait till entry is created and selected in the tree
+ bot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ return browserTree.selection().get( 0 ).get( 0 ).equals( "o=" + name );
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "Could not find widget";
+ }
+ } );
+
+ // delete the entry
+ contextMenu = browserTree.contextMenu( "Delete Entry" );
+ contextMenu.click();
+ bot.button( "OK" ).click();
+
+ // wait till the parent ou=system is selected in the tree
+ bot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ return browserTree.selection().get( 0 ).get( 0 ).startsWith( "ou=system" );
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "Could not find widget";
+ }
+ } );
+ }
+
+}