Explorar el Código

fix #2797 Enhanced CrawlingConfigHelper with improved parameter naming and added extensive JUnit tests for robust testing

Shinsuke Sugaya hace 1 año
padre
commit
296368a9fc

+ 8 - 4
src/main/java/org/codelibs/fess/helper/CrawlingConfigHelper.java

@@ -151,12 +151,12 @@ public class CrawlingConfigHelper {
         return sessionCountId;
     }
 
-    public void remove(final String sessionId) {
-        crawlingConfigMap.remove(sessionId);
+    public void remove(final String sessionCountId) {
+        crawlingConfigMap.remove(sessionCountId);
     }
 
-    public CrawlingConfig get(final String sessionId) {
-        return crawlingConfigMap.get(sessionId);
+    public CrawlingConfig get(final String sessionCountId) {
+        return crawlingConfigMap.get(sessionCountId);
     }
 
     public List<WebConfig> getAllWebConfigList() {
@@ -277,6 +277,10 @@ public class CrawlingConfigHelper {
     }
 
     public OptionalEntity<CrawlingConfig> getDefaultConfig(final ConfigType configType) {
+        if (configType == null) {
+            return OptionalEntity.empty();
+        }
+
         final String name = ComponentUtil.getFessConfig().getFormAdminDefaultTemplateName();
 
         return switch (configType) {

+ 434 - 0
src/test/java/org/codelibs/fess/helper/CrawlingConfigHelperTest.java

@@ -0,0 +1,434 @@
+/*
+ * Copyright 2012-2023 CodeLibs Project and the Others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.codelibs.fess.helper;
+
+import java.io.File;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.codelibs.core.io.FileUtil;
+import org.codelibs.core.misc.DynamicProperties;
+import org.codelibs.fess.Constants;
+import org.codelibs.fess.app.service.DataConfigService;
+import org.codelibs.fess.app.service.FileConfigService;
+import org.codelibs.fess.app.service.WebConfigService;
+import org.codelibs.fess.es.config.cbean.DataConfigCB;
+import org.codelibs.fess.es.config.cbean.FailureUrlCB;
+import org.codelibs.fess.es.config.cbean.FileConfigCB;
+import org.codelibs.fess.es.config.cbean.WebConfigCB;
+import org.codelibs.fess.es.config.exbhv.DataConfigBhv;
+import org.codelibs.fess.es.config.exbhv.FailureUrlBhv;
+import org.codelibs.fess.es.config.exbhv.FileConfigBhv;
+import org.codelibs.fess.es.config.exbhv.WebConfigBhv;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigType;
+import org.codelibs.fess.es.config.exentity.DataConfig;
+import org.codelibs.fess.es.config.exentity.FailureUrl;
+import org.codelibs.fess.es.config.exentity.FileConfig;
+import org.codelibs.fess.es.config.exentity.WebConfig;
+import org.codelibs.fess.unit.UnitFessTestCase;
+import org.codelibs.fess.util.ComponentUtil;
+import org.dbflute.bhv.readable.CBCall;
+import org.dbflute.cbean.result.ListResultBean;
+import org.dbflute.optional.OptionalEntity;
+import org.opensearch.index.query.QueryBuilder;
+import org.opensearch.search.sort.FieldSortBuilder;
+
+public class CrawlingConfigHelperTest extends UnitFessTestCase {
+    private CrawlingConfigHelper crawlingConfigHelper;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        final File propFile = File.createTempFile("system", ".properties");
+        propFile.deleteOnExit();
+        FileUtil.writeBytes(propFile.getAbsolutePath(), "".getBytes());
+        ComponentUtil.register(new DynamicProperties(propFile), "systemProperties");
+        crawlingConfigHelper = new CrawlingConfigHelper();
+        crawlingConfigHelper.init();
+        ComponentUtil.register(crawlingConfigHelper, "crawlingConfigHelper");
+        ComponentUtil.register(new WebConfigService() {
+            @Override
+            public OptionalEntity<WebConfig> getWebConfig(final String id) {
+                final WebConfig webConfig = new WebConfig();
+                webConfig.setId(id);
+                if (id.endsWith("P")) {
+                    webConfig.setConfigParameter("config.pipeline=wp");
+                }
+                return OptionalEntity.of(webConfig);
+            }
+
+            @Override
+            public OptionalEntity<WebConfig> getWebConfigByName(String name) {
+                final WebConfig webConfig = new WebConfig();
+                webConfig.setId("01T");
+                webConfig.setName("__TEMPLATE__");
+                return OptionalEntity.of(webConfig);
+            }
+        }, WebConfigService.class.getCanonicalName());
+        ComponentUtil.register(new FileConfigService() {
+            @Override
+            public OptionalEntity<FileConfig> getFileConfig(final String id) {
+                final FileConfig fileConfig = new FileConfig();
+                fileConfig.setId(id);
+                if (id.endsWith("P")) {
+                    fileConfig.setConfigParameter("config.pipeline=fp");
+                }
+                return OptionalEntity.of(fileConfig);
+            }
+
+            @Override
+            public OptionalEntity<FileConfig> getFileConfigByName(String name) {
+                final FileConfig fileConfig = new FileConfig();
+                fileConfig.setId("11T");
+                fileConfig.setName("__TEMPLATE__");
+                return OptionalEntity.of(fileConfig);
+            }
+        }, FileConfigService.class.getCanonicalName());
+        ComponentUtil.register(new DataConfigService() {
+            @Override
+            public OptionalEntity<DataConfig> getDataConfig(final String id) {
+                final DataConfig dataConfig = new DataConfig();
+                dataConfig.setId(id);
+                if (id.endsWith("P")) {
+                    dataConfig.setHandlerParameter("config.pipeline=dp");
+                }
+                return OptionalEntity.of(dataConfig);
+            }
+
+            @Override
+            public OptionalEntity<DataConfig> getDataConfigByName(String name) {
+                final DataConfig dataConfig = new DataConfig();
+                dataConfig.setId("21T");
+                dataConfig.setName("__TEMPLATE__");
+                return OptionalEntity.of(dataConfig);
+            }
+        }, DataConfigService.class.getCanonicalName());
+    }
+
+    public void test_getConfigType() {
+        assertNull(crawlingConfigHelper.getConfigType(null));
+        assertNull(crawlingConfigHelper.getConfigType(""));
+        assertNull(crawlingConfigHelper.getConfigType("XXX"));
+        assertNull(crawlingConfigHelper.getConfigType("W"));
+        assertNull(crawlingConfigHelper.getConfigType("F"));
+        assertNull(crawlingConfigHelper.getConfigType("D"));
+        assertEquals(ConfigType.WEB, crawlingConfigHelper.getConfigType("WX"));
+        assertEquals(ConfigType.FILE, crawlingConfigHelper.getConfigType("FX"));
+        assertEquals(ConfigType.DATA, crawlingConfigHelper.getConfigType("DX"));
+    }
+
+    public void test_getCrawlingConfig() {
+        crawlingConfigHelper.refresh();
+        assertNull(crawlingConfigHelper.getCrawlingConfig(null));
+        assertNull(crawlingConfigHelper.getCrawlingConfig(""));
+        assertNull(crawlingConfigHelper.getCrawlingConfig("XXX"));
+        final CrawlingConfig webConfig = crawlingConfigHelper.getCrawlingConfig("W01");
+        assertEquals("01", webConfig.getId());
+        assertTrue(webConfig instanceof WebConfig);
+        final CrawlingConfig fileConfig = crawlingConfigHelper.getCrawlingConfig("F11");
+        assertEquals("11", fileConfig.getId());
+        assertTrue(fileConfig instanceof FileConfig);
+        final CrawlingConfig dataConfig = crawlingConfigHelper.getCrawlingConfig("D21");
+        assertEquals("21", dataConfig.getId());
+        assertTrue(dataConfig instanceof DataConfig);
+    }
+
+    public void test_getPipeline() {
+        crawlingConfigHelper.refresh();
+        assertTrue(crawlingConfigHelper.getPipeline(null).isEmpty());
+        assertTrue(crawlingConfigHelper.getPipeline("").isEmpty());
+        assertTrue(crawlingConfigHelper.getPipeline("XXX").isEmpty());
+        assertTrue(crawlingConfigHelper.getPipeline("W1").isEmpty());
+        assertTrue(crawlingConfigHelper.getPipeline("F1").isEmpty());
+        assertTrue(crawlingConfigHelper.getPipeline("D1").isEmpty());
+        assertEquals("wp", crawlingConfigHelper.getPipeline("W1P").get());
+        assertEquals("fp", crawlingConfigHelper.getPipeline("F1P").get());
+        assertEquals("dp", crawlingConfigHelper.getPipeline("D1P").get());
+    }
+
+    public void test_sessionCountId() {
+        final String sessionId = "12345";
+        final String sessionCountId = sessionId + "-1";
+        assertNull(crawlingConfigHelper.get(sessionCountId));
+        crawlingConfigHelper.store(sessionId, crawlingConfigHelper.getCrawlingConfig("W1"));
+        assertEquals("1", crawlingConfigHelper.get(sessionCountId).getId());
+        crawlingConfigHelper.remove(sessionCountId);
+        assertNull(crawlingConfigHelper.get(sessionCountId));
+    }
+
+    public void test_getAllWebConfigList() {
+        final WebConfigCB cb = new WebConfigCB();
+        ComponentUtil.register(new WebConfigBhv() {
+            @Override
+            public ListResultBean<WebConfig> selectList(final CBCall<WebConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<WebConfig> list = new ListResultBean<>();
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W1"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W2"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W3"));
+                return list;
+            }
+        }, WebConfigBhv.class.getCanonicalName());
+        final List<WebConfig> configList = crawlingConfigHelper.getAllWebConfigList();
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getWebConfigListByIds_null() {
+        final WebConfigCB cb = new WebConfigCB();
+        ComponentUtil.register(new WebConfigBhv() {
+            @Override
+            public ListResultBean<WebConfig> selectList(final CBCall<WebConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<WebConfig> list = new ListResultBean<>();
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W1"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W2"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W3"));
+                return list;
+            }
+        }, WebConfigBhv.class.getCanonicalName());
+        final List<WebConfig> configList = crawlingConfigHelper.getWebConfigListByIds(null);
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getWebConfigListByIds() {
+        final WebConfigCB cb = new WebConfigCB();
+        ComponentUtil.register(new WebConfigBhv() {
+            @Override
+            public ListResultBean<WebConfig> selectList(final CBCall<WebConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<WebConfig> list = new ListResultBean<>();
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W1"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W2"));
+                list.add((WebConfig) crawlingConfigHelper.getCrawlingConfig("W3"));
+                return list;
+            }
+        }, WebConfigBhv.class.getCanonicalName());
+        final List<WebConfig> configList = crawlingConfigHelper.getWebConfigListByIds(List.of("W1", "W2", "W3"));
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("IdsQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getAllFileConfigList() {
+        final FileConfigCB cb = new FileConfigCB();
+        ComponentUtil.register(new FileConfigBhv() {
+            @Override
+            public ListResultBean<FileConfig> selectList(final CBCall<FileConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<FileConfig> list = new ListResultBean<>();
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F1"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F2"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F3"));
+                return list;
+            }
+        }, FileConfigBhv.class.getCanonicalName());
+        final List<FileConfig> configList = crawlingConfigHelper.getAllFileConfigList();
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getFileConfigListByIds_null() {
+        final FileConfigCB cb = new FileConfigCB();
+        ComponentUtil.register(new FileConfigBhv() {
+            @Override
+            public ListResultBean<FileConfig> selectList(final CBCall<FileConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<FileConfig> list = new ListResultBean<>();
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F1"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F2"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F3"));
+                return list;
+            }
+        }, FileConfigBhv.class.getCanonicalName());
+        final List<FileConfig> configList = crawlingConfigHelper.getFileConfigListByIds(null);
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getFileConfigListByIds() {
+        final FileConfigCB cb = new FileConfigCB();
+        ComponentUtil.register(new FileConfigBhv() {
+            @Override
+            public ListResultBean<FileConfig> selectList(final CBCall<FileConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<FileConfig> list = new ListResultBean<>();
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F1"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F2"));
+                list.add((FileConfig) crawlingConfigHelper.getCrawlingConfig("F3"));
+                return list;
+            }
+        }, FileConfigBhv.class.getCanonicalName());
+        final List<FileConfig> configList = crawlingConfigHelper.getFileConfigListByIds(List.of("F1", "F2", "F3"));
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("IdsQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getAllDataConfigList() {
+        final DataConfigCB cb = new DataConfigCB();
+        ComponentUtil.register(new DataConfigBhv() {
+            @Override
+            public ListResultBean<DataConfig> selectList(final CBCall<DataConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<DataConfig> list = new ListResultBean<>();
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D1"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D2"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D3"));
+                return list;
+            }
+        }, DataConfigBhv.class.getCanonicalName());
+        final List<DataConfig> configList = crawlingConfigHelper.getAllDataConfigList();
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getDataConfigListByIds_null() {
+        final DataConfigCB cb = new DataConfigCB();
+        ComponentUtil.register(new DataConfigBhv() {
+            @Override
+            public ListResultBean<DataConfig> selectList(final CBCall<DataConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<DataConfig> list = new ListResultBean<>();
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D1"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D2"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D3"));
+                return list;
+            }
+        }, DataConfigBhv.class.getCanonicalName());
+        final List<DataConfig> configList = crawlingConfigHelper.getDataConfigListByIds(null);
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("TermQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getDataConfigListByIds() {
+        final DataConfigCB cb = new DataConfigCB();
+        ComponentUtil.register(new DataConfigBhv() {
+            @Override
+            public ListResultBean<DataConfig> selectList(final CBCall<DataConfigCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<DataConfig> list = new ListResultBean<>();
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D1"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D2"));
+                list.add((DataConfig) crawlingConfigHelper.getCrawlingConfig("D3"));
+                return list;
+            }
+        }, DataConfigBhv.class.getCanonicalName());
+        final List<DataConfig> configList = crawlingConfigHelper.getDataConfigListByIds(List.of("D1", "D2", "D3"));
+        assertEquals(3, configList.size());
+        final List<QueryBuilder> queryBuilderList = cb.query().getQueryBuilderList();
+        assertEquals(2, queryBuilderList.size());
+        assertEquals("IdsQueryBuilder", queryBuilderList.get(0).getClass().getSimpleName());
+        assertEquals("BoolQueryBuilder", queryBuilderList.get(1).getClass().getSimpleName());
+        final List<FieldSortBuilder> fieldSortBuilderList = cb.query().getFieldSortBuilderList();
+        assertEquals(2, fieldSortBuilderList.size());
+        assertEquals("sortOrder", fieldSortBuilderList.get(0).getFieldName());
+        assertEquals("name", fieldSortBuilderList.get(1).getFieldName());
+    }
+
+    public void test_getExcludedUrlList() {
+        final AtomicInteger errorCount = new AtomicInteger(0);
+        final DynamicProperties systemProperties = ComponentUtil.getSystemProperties();
+        final FailureUrlCB cb = new FailureUrlCB();
+        ComponentUtil.register(new FailureUrlBhv() {
+            @Override
+            public ListResultBean<FailureUrl> selectList(final CBCall<FailureUrlCB> cbLambda) {
+                cbLambda.callback(cb);
+                final ListResultBean<FailureUrl> list = new ListResultBean<>();
+                for (int i = 0; i < errorCount.get(); i++) {
+                    FailureUrl failureUrl = new FailureUrl();
+                    failureUrl.setId("E" + i);
+                    failureUrl.setUrl("http://test.com/" + i + ".html");
+                    failureUrl.setErrorCount(i);
+                    failureUrl.setErrorName("TestError" + i);
+                    list.add(failureUrl);
+                }
+                return list;
+            }
+        }, FailureUrlBhv.class.getCanonicalName());
+
+        assertEquals(0, crawlingConfigHelper.getExcludedUrlList("123").size());
+        systemProperties.setProperty(Constants.FAILURE_COUNT_THRESHOLD_PROPERTY, "0");
+        assertEquals(0, crawlingConfigHelper.getExcludedUrlList("123").size());
+        errorCount.set(5);
+        assertEquals(5, crawlingConfigHelper.getExcludedUrlList("123").size());
+        systemProperties.setProperty(Constants.IGNORE_FAILURE_TYPE_PROPERTY, "TestError0");
+        assertEquals(4, crawlingConfigHelper.getExcludedUrlList("123").size());
+    }
+
+    public void test_getDefaultConfig() {
+        assertTrue(crawlingConfigHelper.getDefaultConfig(null).isEmpty());
+        assertEquals("01T", crawlingConfigHelper.getDefaultConfig(ConfigType.WEB).get().getId());
+        assertEquals("11T", crawlingConfigHelper.getDefaultConfig(ConfigType.FILE).get().getId());
+        assertEquals("21T", crawlingConfigHelper.getDefaultConfig(ConfigType.DATA).get().getId());
+    }
+}