@Test
	public void multiThreadedOperationsTest() throws InterruptedException, ExecutionException {
		logger.info("fill the space with entries");		
		ExecutorService threadPool = Executors.newFixedThreadPool(NUM_OF_THREADS);
		List<Future<?>> futures = new ArrayList<Future<?>>();
		for (int i = 0; i < NUM_OF_THREADS; i++) {
			Future<?> future = threadPool.submit(new Runnable() {

				@Override
				public void run() {
					for (int i = 0; i < cacheSize * 10; i++) {
						if(i % 3 == 0)
							gigaSpace.write(new GoldMedal(i));
						else if (i % 3 == 1)
							gigaSpace.write(new SilverMedal(i));
						else
							gigaSpace.write(new BronzeMedal(i));
					}
				}
			});
			futures.add(future);
		}

		for (Future<?> future : futures) {
			Assert.assertNull(future.get());
		}
		threadPool.shutdown();
		threadPool.awaitTermination(60, TimeUnit.SECONDS);
		logger.info("assert objects only amount to cache size");		
		assertCacheSizeEqualsCountInSpace();
		assertMultiThreadedOperationsTest();
		logger.info("Test Passed");
	}