Skip to content

Commit e9553b2

Browse files
authored
Merge pull request #35 from jglick/SplunkJenkinsInstallation.load
Ensure `SplunkJenkinsInstallation.load` calculates `metadataItemSet`
2 parents 9a47095 + 34cf45b commit e9553b2

File tree

2 files changed

+77
-8
lines changed

2 files changed

+77
-8
lines changed

splunk-devops/src/main/java/com/splunk/splunkjenkins/SplunkJenkinsInstallation.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,19 @@ public class SplunkJenkinsInstallation extends GlobalConfiguration {
9595

9696
public SplunkJenkinsInstallation(boolean useConfigFile) {
9797
if (useConfigFile) {
98-
super.load();
99-
migrate();
100-
//load default metadata
101-
try (InputStream metaInput = this.getClass().getClassLoader().getResourceAsStream("metadata.properties")) {
102-
defaultMetaData = IOUtils.toString(metaInput);
103-
} catch (IOException e) {
104-
//ignore
105-
}
98+
load();
99+
}
100+
}
101+
102+
@Override
103+
public synchronized final void load() {
104+
super.load();
105+
migrate();
106+
//load default metadata
107+
try (InputStream metaInput = this.getClass().getClassLoader().getResourceAsStream("metadata.properties")) {
108+
defaultMetaData = IOUtils.toString(metaInput);
109+
} catch (IOException e) {
110+
//ignore
106111
}
107112
}
108113

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* The MIT License
3+
*
4+
* Copyright 2023 CloudBees, Inc.
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in
14+
* all copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
* THE SOFTWARE.
23+
*/
24+
25+
package com.splunk.splunkjenkins;
26+
27+
import com.splunk.splunkjenkins.model.EventType;
28+
import com.splunk.splunkjenkins.model.MetaDataConfigItem;
29+
import java.io.File;
30+
import java.nio.charset.StandardCharsets;
31+
import java.util.Collections;
32+
import java.util.Set;
33+
import jenkins.model.Jenkins;
34+
import org.apache.commons.io.FileUtils;
35+
import static org.hamcrest.MatcherAssert.assertThat;
36+
import static org.hamcrest.Matchers.containsString;
37+
import static org.hamcrest.Matchers.hasSize;
38+
import static org.hamcrest.Matchers.is;
39+
import org.junit.Rule;
40+
import org.junit.Test;
41+
import org.jvnet.hudson.test.JenkinsRule;
42+
43+
public final class SplunkJenkinsInstallationTest {
44+
45+
@Rule
46+
public final JenkinsRule r = new JenkinsRule();
47+
48+
@Test
49+
public void reload() throws Exception {
50+
SplunkJenkinsInstallation cfg = SplunkJenkinsInstallation.get();
51+
cfg.setMetadataItemSet(Collections.singleton(new MetaDataConfigItem(EventType.BUILD_EVENT.toString(), "index", "value000")));
52+
cfg.save();
53+
File xmlFile = new File(Jenkins.get().getRootDir(), cfg.getId() + ".xml");
54+
String xml = FileUtils.readFileToString(xmlFile, StandardCharsets.UTF_8);
55+
assertThat(xml, containsString("value000"));
56+
xml = xml.replace("value000", "value999");
57+
FileUtils.writeStringToFile(xmlFile, xml, StandardCharsets.UTF_8);
58+
cfg.load();
59+
Set<MetaDataConfigItem> metadataItemSet = cfg.getMetadataItemSet();
60+
assertThat(metadataItemSet, hasSize(1));
61+
assertThat(metadataItemSet.iterator().next().getValue(), is("value999"));
62+
}
63+
64+
}

0 commit comments

Comments
 (0)