*/
package jalview.io.cache;
+import java.lang.reflect.InvocationTargetException;
import java.util.LinkedHashSet;
+import javax.swing.SwingUtilities;
+
import org.junit.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
appCache = AppCache.getInstance();
}
- @Test(groups = { "Functional" })
+ @Test(groups = { "Functional", "testTask2" })
public void getUserInputTest()
{
String userInput = cacheBox.getUserInput();
try
{
- // This delay is essential to prevent the
- // assertion below from executing before
- // swing thread finishes updating the combo-box
- Thread.sleep(350);
- } catch (InterruptedException e)
+ // fix for JAL-4153
+ // This delay is essential to prevent the assertion below from executing
+ // before swing thread finishes updating the combo-box
+ SwingUtilities.invokeAndWait(() -> {
+ try
+ {
+ Thread.sleep(1);
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ });
+ } catch (InvocationTargetException | InterruptedException e)
{
e.printStackTrace();
}
cacheBox.addItem(testInput);
cacheBox.setSelectedItem(testInput);
cacheBox.updateCache();
- try
+ boolean done[]=new boolean[] { false };
+ // this event gets processed after updateCache's update event on the swing
+ // thread
+ SwingUtilities.invokeLater(() -> {
+ done[0]=true;
+ });
+ long t=0;
+ while (!done[0] && t<200)
{
- // This delay is to let
- // cacheBox.updateCache() finish updating the cache
- Thread.sleep(350);
- } catch (InterruptedException e)
+ try {
+ Thread.sleep(7);
+ t++;
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ if (!done[0])
{
- e.printStackTrace();
+ Assert.fail("Giving up after 1.4s waiting for cache to be updated.");
}
+
LinkedHashSet<String> foundCache = appCache
.getAllCachedItemsFor(TEST_CACHE_KEY);
Assert.assertTrue(foundCache.contains(testInput));