Skip to content

Commit aa0caff

Browse files
ahornaceVladimir Kotal
authored andcommitted
Add tests to check if suggester is notified on configuration change
1 parent fc39eac commit aa0caff

File tree

6 files changed

+44
-10
lines changed

6 files changed

+44
-10
lines changed

src/org/opensolaris/opengrok/configuration/RuntimeEnvironment.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
import org.opensolaris.opengrok.util.ForbiddenSymlinkException;
9090
import org.opensolaris.opengrok.util.PathUtils;
9191
import org.opensolaris.opengrok.web.Prefix;
92-
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterServiceFactory;
9392

9493
import javax.ws.rs.client.ClientBuilder;
9594
import javax.ws.rs.client.Entity;
@@ -1718,7 +1717,6 @@ public void applyConfig(Configuration config, boolean reindex, boolean interacti
17181717
getAuthorizationFramework().reload();
17191718

17201719
messagesContainer.setMessageLimit(config.getMessageLimit());
1721-
SuggesterServiceFactory.getDefault().refresh(configuration);
17221720
}
17231721

17241722
public void setIndexTimestamp() throws IOException {

src/org/opensolaris/opengrok/web/api/v1/controller/ConfigurationController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424

2525
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
2626
import org.opensolaris.opengrok.util.ClassUtil;
27+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
2728

29+
import javax.inject.Inject;
2830
import javax.ws.rs.Consumes;
2931
import javax.ws.rs.GET;
3032
import javax.ws.rs.POST;
@@ -43,6 +45,9 @@ public class ConfigurationController {
4345

4446
private final RuntimeEnvironment env = RuntimeEnvironment.getInstance();
4547

48+
@Inject
49+
private SuggesterService suggesterService;
50+
4651
@GET
4752
@Produces(MediaType.APPLICATION_XML)
4853
public String get() {
@@ -53,6 +58,7 @@ public String get() {
5358
@Consumes(MediaType.APPLICATION_XML)
5459
public void set(final String body, @QueryParam("reindex") final boolean reindex) {
5560
env.applyConfig(body, reindex, !reindex);
61+
suggesterService.refresh();
5662
}
5763

5864
@GET
@@ -77,6 +83,7 @@ public void setField(@PathParam("field") final String field, final String value)
7783

7884
// apply the configuration - let the environment reload the configuration if necessary
7985
env.applyConfig(env.getConfiguration(), false, true);
86+
suggesterService.refresh();
8087
}
8188

8289
@POST

src/org/opensolaris/opengrok/web/api/v1/suggester/provider/service/SuggesterService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.lucene.search.Query;
2727
import org.opengrok.suggest.LookupResultItem;
2828
import org.opengrok.suggest.query.SuggesterQuery;
29-
import org.opensolaris.opengrok.configuration.Configuration;
3029

3130
import java.util.Collection;
3231
import java.util.List;
@@ -46,9 +45,8 @@ public interface SuggesterService {
4645

4746
/**
4847
* Refreshes the suggester based on the new configuration.
49-
* @param configuration new configuration
5048
*/
51-
void refresh(Configuration configuration);
49+
void refresh();
5250

5351
/**
5452
* Refreshes the suggester for specified {@code project}.

src/org/opensolaris/opengrok/web/api/v1/suggester/provider/service/impl/SuggesterServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ private List<NamedIndexReader> getNamedIndexReaders(
153153

154154
/** {@inheritDoc} */
155155
@Override
156-
public void refresh(final Configuration configuration) {
157-
logger.log(Level.FINE, "Refreshing suggester for new configuration {0}", configuration);
156+
public void refresh() {
157+
logger.log(Level.FINE, "Refreshing suggester for new configuration {0}", env.getConfiguration());
158158
lock.writeLock().lock();
159159
try {
160160
// close and init from scratch because many things may have changed in the configuration

test/org/opensolaris/opengrok/web/api/v1/controller/ConfigurationControllerTest.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,42 @@
2222
*/
2323
package org.opensolaris.opengrok.web.api.v1.controller;
2424

25+
import org.glassfish.jersey.internal.inject.AbstractBinder;
2526
import org.glassfish.jersey.server.ResourceConfig;
2627
import org.glassfish.jersey.test.JerseyTest;
2728
import org.junit.Assert;
2829
import org.junit.Test;
30+
import org.mockito.Mock;
31+
import org.mockito.MockitoAnnotations;
2932
import org.opensolaris.opengrok.configuration.Configuration;
3033
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
34+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
3135

3236
import javax.ws.rs.client.Entity;
3337
import javax.ws.rs.core.Application;
3438
import javax.ws.rs.core.Response;
3539

3640
import static org.junit.Assert.assertEquals;
41+
import static org.mockito.Mockito.reset;
42+
import static org.mockito.Mockito.verify;
3743

3844
public class ConfigurationControllerTest extends JerseyTest {
3945

4046
private RuntimeEnvironment env = RuntimeEnvironment.getInstance();
4147

48+
@Mock
49+
private SuggesterService suggesterService;
50+
4251
@Override
4352
protected Application configure() {
44-
return new ResourceConfig(ConfigurationController.class);
53+
MockitoAnnotations.initMocks(this);
54+
return new ResourceConfig(ConfigurationController.class)
55+
.register(new AbstractBinder() {
56+
@Override
57+
protected void configure() {
58+
bind(suggesterService).to(SuggesterService.class);
59+
}
60+
});
4561
}
4662

4763
@Test
@@ -204,4 +220,20 @@ public void testApplyGetOptionBoolean() {
204220
Assert.assertEquals(env.getConfiguration().isHistoryCache(), response);
205221
}
206222

223+
@Test
224+
public void testSuggesterServiceNotifiedOnConfigurationFieldChange() {
225+
reset(suggesterService);
226+
setValue("sourceRoot", "test");
227+
verify(suggesterService).refresh();
228+
}
229+
230+
@Test
231+
public void testSuggesterServiceNotifiedOnConfigurationChange() {
232+
reset(suggesterService);
233+
target("configuration")
234+
.request()
235+
.put(Entity.xml(new Configuration().getXMLRepresentationAsString()));
236+
verify(suggesterService).refresh();
237+
}
238+
207239
}

test/org/opensolaris/opengrok/web/api/v1/controller/ProjectsControllerTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*/
2323
package org.opensolaris.opengrok.web.api.v1.controller;
2424

25-
import org.glassfish.hk2.utilities.binding.AbstractBinder;
25+
import org.glassfish.jersey.internal.inject.AbstractBinder;
2626
import org.glassfish.jersey.server.ResourceConfig;
2727
import org.glassfish.jersey.test.JerseyTest;
2828
import org.junit.After;
@@ -64,7 +64,6 @@
6464
import static org.junit.Assert.assertFalse;
6565
import static org.junit.Assert.assertNotNull;
6666
import static org.junit.Assert.assertTrue;
67-
import static org.mockito.Mockito.mock;
6867
import static org.opensolaris.opengrok.history.RepositoryFactory.getRepository;
6968
import static org.opensolaris.opengrok.util.IOUtils.removeRecursive;
7069

0 commit comments

Comments
 (0)