Use a latch instead of a sleep. More deterministic
diff --git a/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java b/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
index 2045437..ded8f40 100644
--- a/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
+++ b/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
@@ -26,6 +26,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import javax.cache.Cache;
@@ -54,32 +55,42 @@
                 new Properties() {{
                     setProperty("evictionPause", "2");
                 }});
-        final CacheEntryExpiredListenerImpl listener = new CacheEntryExpiredListenerImpl();
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final CacheEntryExpiredListenerImpl listener = new CacheEntryExpiredListenerImpl(latch);
         cacheManager.createCache("default", new MutableConfiguration<String, String>()
                 .setExpiryPolicyFactory(new FactoryBuilder.SingletonFactory<ExpiryPolicy>(
                         new CreatedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 2))))
-                .addCacheEntryListenerConfiguration(new MutableCacheEntryListenerConfiguration<String, String>(
+                .addCacheEntryListenerConfiguration(new MutableCacheEntryListenerConfiguration<>(
                         FactoryBuilder.factoryOf(listener),
                         null, false, false
                 )));
         final Cache<String, String> cache = cacheManager.getCache("default");
         assertFalse(cache.containsKey("foo"));
         cache.put("foo", "bar");
-        Thread.sleep(20);
+        latch.await(1, TimeUnit.MINUTES);
         assertEquals(1, listener.events.size());
         cachingProvider.close();
     }
 
     private static class CacheEntryExpiredListenerImpl implements CacheEntryExpiredListener<String, String>, Serializable {
+
         private final Collection<CacheEntryEvent<? extends String, ? extends String>> events =
                 new ArrayList<CacheEntryEvent<? extends String, ? extends String>>();
 
+        private CountDownLatch latch;
+
+        public CacheEntryExpiredListenerImpl(final CountDownLatch latch) {
+            this.latch = latch;
+        }
+
         @Override
         public void onExpired(final Iterable<CacheEntryEvent<? extends String, ? extends String>> cacheEntryEvents)
                 throws CacheEntryListenerException {
             for (final CacheEntryEvent<? extends String, ? extends String> cacheEntryEvent : cacheEntryEvents) {
                 events.add(cacheEntryEvent);
             }
+            latch.countDown();
         }
     }
 }