Skip to content

Commit 2188056

Browse files
committed
#115 Adding caching to additional filters along with unit tests.
1 parent ed7bbea commit 2188056

File tree

13 files changed

+1293
-1096
lines changed

13 files changed

+1293
-1096
lines changed

phileas-core/src/main/java/ai/philterd/phileas/services/FilterPolicyLoader.java

+1,135
Large diffs are not rendered by default.

phileas-core/src/main/java/ai/philterd/phileas/services/PhileasFilterService.java

+9-1,049
Large diffs are not rendered by default.

phileas-core/src/test/java/ai/philterd/test/phileas/services/EndToEndTests.java

+30-30
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/*
2+
* Copyright 2024 Philterd, LLC @ https://www.philterd.ai
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package ai.philterd.test.phileas.services;
17+
18+
import ai.philterd.phileas.model.configuration.PhileasConfiguration;
19+
import ai.philterd.phileas.model.enums.FilterType;
20+
import ai.philterd.phileas.model.filter.Filter;
21+
import ai.philterd.phileas.model.policy.Identifiers;
22+
import ai.philterd.phileas.model.policy.Policy;
23+
import ai.philterd.phileas.model.policy.filters.ZipCode;
24+
import ai.philterd.phileas.model.services.AlertService;
25+
import ai.philterd.phileas.model.services.AnonymizationCacheService;
26+
import ai.philterd.phileas.model.services.MetricsService;
27+
import ai.philterd.phileas.services.FilterPolicyLoader;
28+
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
29+
import org.apache.logging.log4j.LogManager;
30+
import org.apache.logging.log4j.Logger;
31+
import org.junit.jupiter.api.Assertions;
32+
import org.junit.jupiter.api.Test;
33+
import org.mockito.Mockito;
34+
35+
import java.util.HashMap;
36+
import java.util.List;
37+
import java.util.Map;
38+
import java.util.Properties;
39+
40+
public class FilterPolicyLoaderTest {
41+
42+
private static final Logger LOGGER = LogManager.getLogger(FilterPolicyLoaderTest.class);
43+
44+
@Test
45+
public void getFiltersForPolicy() throws Exception {
46+
47+
final AnonymizationCacheService anonymizationCacheService = Mockito.mock(AnonymizationCacheService.class);
48+
final AlertService alertService = Mockito.mock(AlertService.class);
49+
final MetricsService metricsService = Mockito.mock(MetricsService.class);
50+
final Map<String, DescriptiveStatistics> stats = new HashMap<>();
51+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(new Properties());
52+
53+
final FilterPolicyLoader filterPolicyLoader = new FilterPolicyLoader(alertService, anonymizationCacheService, metricsService, stats, phileasConfiguration);
54+
55+
final Identifiers identifiers = new Identifiers();
56+
identifiers.setZipCode(new ZipCode());
57+
58+
final Policy policy = new Policy();
59+
policy.setName("unnamed");
60+
policy.setIdentifiers(identifiers);
61+
62+
final Map<String, Map<FilterType, Filter>> filterCache = new HashMap<>();
63+
64+
final List<Filter> filters = filterPolicyLoader.getFiltersForPolicy(policy, filterCache);
65+
66+
Assertions.assertEquals(1, filters.size());
67+
Assertions.assertEquals(1, filterCache.size());
68+
Assertions.assertNotNull(filterCache.get("unnamed").get(FilterType.ZIP_CODE));
69+
70+
}
71+
72+
@Test
73+
public void getFiltersForPolicyWithNoFilters() throws Exception {
74+
75+
final AnonymizationCacheService anonymizationCacheService = Mockito.mock(AnonymizationCacheService.class);
76+
final AlertService alertService = Mockito.mock(AlertService.class);
77+
final MetricsService metricsService = Mockito.mock(MetricsService.class);
78+
final Map<String, DescriptiveStatistics> stats = new HashMap<>();
79+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(new Properties());
80+
81+
final FilterPolicyLoader filterPolicyLoader = new FilterPolicyLoader(alertService, anonymizationCacheService, metricsService, stats, phileasConfiguration);
82+
83+
final Policy policy = new Policy();
84+
policy.setName("unnamed");
85+
86+
final Map<String, Map<FilterType, Filter>> filterCache = new HashMap<>();
87+
88+
final List<Filter> filters = filterPolicyLoader.getFiltersForPolicy(policy, filterCache);
89+
90+
Assertions.assertEquals(0, filters.size());
91+
Assertions.assertEquals(1, filterCache.size());
92+
Assertions.assertEquals(0, filterCache.get("unnamed").size());
93+
94+
}
95+
96+
}

phileas-core/src/test/java/ai/philterd/test/phileas/services/PhileasFilterServiceTest.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,15 @@
1616
package ai.philterd.test.phileas.services;
1717

1818
import ai.philterd.phileas.model.configuration.PhileasConfiguration;
19-
import com.google.gson.Gson;
20-
import com.google.gson.GsonBuilder;
2119
import ai.philterd.phileas.model.enums.MimeType;
2220
import ai.philterd.phileas.model.objects.Span;
23-
import ai.philterd.phileas.model.policy.Policy;
2421
import ai.philterd.phileas.model.policy.Ignored;
22+
import ai.philterd.phileas.model.policy.Policy;
2523
import ai.philterd.phileas.model.responses.BinaryDocumentFilterResponse;
2624
import ai.philterd.phileas.model.serializers.PlaceholderDeserializer;
2725
import ai.philterd.phileas.services.PhileasFilterService;
28-
26+
import com.google.gson.Gson;
27+
import com.google.gson.GsonBuilder;
2928
import org.apache.commons.collections.CollectionUtils;
3029
import org.apache.commons.io.FileUtils;
3130
import org.apache.commons.io.IOUtils;
@@ -47,8 +46,8 @@
4746
import java.util.List;
4847
import java.util.Properties;
4948

50-
import static ai.philterd.test.phileas.services.EndToEndTestsHelper.getPolicy;
5149
import static ai.philterd.test.phileas.services.EndToEndTestsHelper.getPdfPolicy;
50+
import static ai.philterd.test.phileas.services.EndToEndTestsHelper.getPolicy;
5251

5352
public class PhileasFilterServiceTest {
5453

@@ -117,7 +116,7 @@ public void pdf1() throws Exception {
117116
properties.setProperty("indexes.directory", INDEXES_DIRECTORY);
118117
properties.setProperty("filter.policies.directory", temp.toFile().getAbsolutePath());
119118

120-
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties, "phileas");
119+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties);
121120

122121
PhileasFilterService service = new PhileasFilterService(phileasConfiguration);
123122
final BinaryDocumentFilterResponse response = service.filter(Arrays.asList("pdf"), "context", "documentid", document, MimeType.APPLICATION_PDF, MimeType.APPLICATION_PDF);
@@ -153,7 +152,7 @@ public void pdf2() throws Exception {
153152
properties.setProperty("indexes.directory", INDEXES_DIRECTORY);
154153
properties.setProperty("filter.policies.directory", temp.toFile().getAbsolutePath());
155154

156-
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties, "phileas");
155+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties);
157156

158157
PhileasFilterService service = new PhileasFilterService(phileasConfiguration);
159158
final BinaryDocumentFilterResponse response = service.filter(Arrays.asList("pdf"), "context", "documentid", document, MimeType.APPLICATION_PDF, MimeType.APPLICATION_PDF);

phileas-core/src/test/java/ai/philterd/test/phileas/services/registry/S3PolicyServiceTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private PhileasConfiguration getConfiguration() throws IOException {
9494

9595
}
9696

97-
return new PhileasConfiguration(properties, "phileas");
97+
return new PhileasConfiguration(properties);
9898

9999
}
100100

phileas-model/src/main/java/ai/philterd/phileas/model/configuration/PhileasConfiguration.java

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ public PhileasConfiguration(final Properties properties, final String applicatio
3030

3131
}
3232

33+
public PhileasConfiguration(final Properties properties) throws IOException {
34+
35+
this.properties = properties;
36+
this.applicationName = "phileas";
37+
38+
}
39+
3340
public String indexesDirectory() {
3441
return getProperty("indexes.directory", "./indexes/");
3542
}

phileas-model/src/main/java/ai/philterd/phileas/model/policy/Policy.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class Policy {
2727

2828
@SerializedName("name")
2929
@Expose
30-
private String name;
30+
private String name = "unnamed";
3131

3232
@SerializedName("config")
3333
@Expose
@@ -51,11 +51,11 @@ public class Policy {
5151

5252
@SerializedName("ignored")
5353
@Expose
54-
private List<Ignored> ignored = Collections.EMPTY_LIST;
54+
private List<Ignored> ignored = Collections.emptyList();
5555

5656
@SerializedName("ignoredPatterns")
5757
@Expose
58-
private List<IgnoredPattern> ignoredPatterns = Collections.EMPTY_LIST;
58+
private List<IgnoredPattern> ignoredPatterns = Collections.emptyList();
5959

6060
@SerializedName("graphical")
6161
@Expose

phileas-services/phileas-services-alerts/src/test/java/ai/philterd/test/phileas/services/alerts/RedisAlertServiceTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ private PhileasConfiguration getConfiguration() throws IOException {
8181

8282
}
8383

84-
return new PhileasConfiguration(properties, "phileas");
84+
return new PhileasConfiguration(properties);
8585

8686
}
8787

phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/AnonymizationCacheServiceFactoryTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private PhileasConfiguration getConfiguration() throws IOException {
4040

4141
final Properties properties = new Properties();
4242

43-
return new PhileasConfiguration(properties, "phileas");
43+
return new PhileasConfiguration(properties);
4444

4545
}
4646

phileas-services/phileas-services-anonymization/src/test/java/ai/philterd/test/phileas/services/anonymization/cache/RedisAnonymizationCacheServiceTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private PhileasConfiguration getConfiguration() throws IOException {
7373

7474
}
7575

76-
return new PhileasConfiguration(properties, "phileas");
76+
return new PhileasConfiguration(properties);
7777

7878
}
7979

phileas-services/phileas-services-disambiguation/src/test/java/ai/philterd/test/phileas/services/disambiguation/LocalVectorBasedSpanDisambiguationServiceTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void disambiguateLocal1() throws IOException {
4343
properties.setProperty("span.disambiguation.vector.size", "32");
4444
properties.setProperty("cache.redis.enabled", "false");
4545

46-
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties, "phileas");
46+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties);
4747

4848
final String context = "c";
4949

@@ -77,7 +77,7 @@ public void disambiguateLocal2() throws IOException {
7777
properties.setProperty("span.disambiguation.vector.size", "32");
7878
properties.setProperty("cache.redis.enabled", "false");
7979

80-
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties, "phileas");
80+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties);
8181

8282
final String context = "c";
8383

phileas-services/phileas-services-disambiguation/src/test/java/ai/philterd/test/phileas/services/disambiguation/RedisVectorBasedSpanDisambiguationServiceTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void after() {
5656
public void disambiguateWithRedis1() throws IOException {
5757

5858
final Properties properties = getProperties();
59-
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties, "phileas");
59+
final PhileasConfiguration phileasConfiguration = new PhileasConfiguration(properties);
6060

6161
final String context = "c";
6262

0 commit comments

Comments
 (0)