package org.dcm4chee.archive.conf;
import org.dcm4che3.conf.core.api.ConfigurableClassExtension;
import org.dcm4che3.conf.core.api.Configuration;
import org.dcm4che3.conf.core.storage.InMemoryConfiguration;
import org.dcm4che3.conf.core.util.Extensions;
import org.dcm4che3.conf.dicom.CommonDicomConfigurationWithHL7;
import org.dcm4che3.net.Connection.Protocol;
import org.dcm4che3.net.Device;
import org.dcm4chee.archive.conf.defaults.DefaultArchiveConfigurationFactory;
import org.dcm4chee.archive.conf.defaults.DefaultArchiveConfigurationFactory.FactoryParams;
import org.dcm4chee.archive.conf.defaults.DefaultDicomConfigInitializer;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
/**
* @author Roman K
*/
@Ignore
public class ArcConfPerformanceTest {
private CommonDicomConfigurationWithHL7 dicomConfig;
@Before
public void before() {
// prepare storage
ArrayList<Class> allExtensionClasses = new ArrayList<Class>();
for (ConfigurableClassExtension extension : ArchiveDeviceTest.getDefaultExtensions())
allExtensionClasses.add(extension.getClass());
// Configuration storage = new SingleJsonFileConfigurationStorage("target/config.json");
Configuration storage = new InMemoryConfiguration();
// storage = new OptimisticLockingConfiguration(storage, allExtensionClasses, storage);
dicomConfig = new CommonDicomConfigurationWithHL7(
storage,
Extensions.getAMapOfExtensionsByBaseExtension(ArchiveDeviceTest.getDefaultExtensions())
);
// wipe out clean
dicomConfig.purgeConfiguration();
}
;
@Test
public void manyDevices() {
//persist default
DefaultDicomConfigInitializer init = new DefaultDicomConfigInitializer();
FactoryParams params = new FactoryParams();
params.generateUUIDsBasedOnName = true;
params.useGroupBasedTCConfig = false;
DefaultArchiveConfigurationFactory defaultArchiveConfigurationFactory = new DefaultArchiveConfigurationFactory(params);
Device myArr = defaultArchiveConfigurationFactory.createARRDevice("myArr", Protocol.SYSLOG_UDP, 105);
dicomConfig.persist(myArr);
for (int i = 0; i < 500; i++) {
dicomConfig.persist(defaultArchiveConfigurationFactory.createArchiveDevice("archive" + i, myArr));
}
System.out.println("persisted");
for (int i = 0; i < 10; i++) {
System.out.println("querying");
System.out.println(dicomConfig.listDeviceNames());
}
for (int j = 0; j < 10; j++)
for (int i = 0; i < 500; i++) {
dicomConfig.findDevice("archive" + i);
System.out.println("device " + i + " loaded");
}
}
}