Skip to content

Commit

Permalink
ISPN-2049 Verify all Externalizer are assigned to their respective ty…
Browse files Browse the repository at this point in the history
…pes as expected
  • Loading branch information
Sanne authored and galderz committed May 17, 2012
1 parent 0a89502 commit deee280
Showing 1 changed file with 46 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@

package org.infinispan.lucene;

import java.util.List;
import java.io.IOException;

import org.infinispan.config.AdvancedExternalizerConfig;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.marshall.jboss.ExternalizerTable;
import org.infinispan.test.SingleCacheManagerTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.jboss.marshalling.ObjectTable.Writer;
import org.testng.Assert;
import org.testng.annotations.Test;

Expand All @@ -46,11 +48,49 @@ protected EmbeddedCacheManager createCacheManager() throws Exception {
ConfigurationBuilder configurationBuilder = CacheTestSupport.createLocalCacheConfiguration();
return TestCacheManagerFactory.createCacheManager(configurationBuilder);
}


@Test
public void testChunkCacheKeyExternalizer() throws IOException {
ChunkCacheKey key = new ChunkCacheKey("myIndex", "filename", 5);
verifyExternalizerForType(key, ChunkCacheKey.Externalizer.class);
}

@Test
public void testFileCacheKeyExternalizer() throws IOException {
FileCacheKey key = new FileCacheKey("myIndex", "fileA.idx");
verifyExternalizerForType(key, FileCacheKey.Externalizer.class);
}

@Test
public void testFileListCacheKeyExternalizer() throws IOException {
FileListCacheKey key = new FileListCacheKey("myIndex");
verifyExternalizerForType(key, FileListCacheKey.Externalizer.class);
}

@Test
public void testExternalizerDefined() {
List<AdvancedExternalizerConfig> advancedExternalizerConfigs = cacheManager.getGlobalConfiguration().getExternalizers();
Assert.assertEquals(5, advancedExternalizerConfigs.size());
public void testFileMetadataExternalizer() throws IOException {
FileMetadata key = new FileMetadata(23);
verifyExternalizerForType(key, FileMetadata.Externalizer.class);
}

@Test
public void testFileReadLockKeyExternalizer() throws IOException {
FileReadLockKey key = new FileReadLockKey("myIndex", "index.lock");
verifyExternalizerForType(key, FileReadLockKey.Externalizer.class);
}

private void verifyExternalizerForType(Object keySampleType, Class expectedExcternalizerClass) throws IOException {
ExternalizerTable externalizerTable = TestingUtil.extractExtTable(cacheManager);

Writer objectWriter = externalizerTable.getObjectWriter(keySampleType);

Assert.assertEquals(objectWriter.getClass().toString(),
"class org.infinispan.marshall.jboss.ExternalizerTable$ForeignExternalizerAdapter",
"Registered Externalizers should be wrapped by a ForeignExternalizerAdapter");

Assert.assertEquals("class " + objectWriter.toString(),
expectedExcternalizerClass.toString(),
"Type of delegate used by the adapter doesn't match expected: " + expectedExcternalizerClass.getClass());
}

}

0 comments on commit deee280

Please sign in to comment.