DefaultCloudhopperConfigurer.java

1
package fr.sii.ogham.sms.builder.cloudhopper;
2
3
import static fr.sii.ogham.core.builder.configuration.MayOverride.overrideIfNotSet;
4
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_AUTO_DATA_CODING_SCHEME_ENABLED;
5
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_AUTO_GUESS_ENABLED;
6
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_BIND_TIMEOUT;
7
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_BIND_TYPE;
8
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_CHARSET;
9
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_CLOUDHOPPER_CONFIGURER_PRIORITY;
10
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_CONNECT_MAX_RETRIES;
11
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_CONNECT_RETRY_DELAY;
12
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_CONNECT_TIMEOUT;
13
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_ENQUIRE_LINK_INTERVAL;
14
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_ENQUIRE_LINK_RESPONSE_TIMEOUT;
15
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_ENQUIRE_LINK_REUSE_RESPONSE_TIMEOUT;
16
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_GSM7BIT_PACKED_ENCODING_PRIORITY;
17
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_GSM8_ENCODING_PRIORITY;
18
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_INTERFACE_VERSION;
19
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_KEEP_ALIVE_CONNECT_AT_STARTUP;
20
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_KEEP_ALIVE_ENABLED;
21
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_KEEP_ALIVE_MAX_CONSECUTIVE_TIMEOUTS;
22
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_LAST_INTERACTION_EXPIRATION_DELAY;
23
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_LATIN1_ENCODING_PRIORITY;
24
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_REQUEST_EXPIRY_TIMEOUT;
25
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_RESPONSE_TIMEOUT;
26
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_REUSE_SESSION_ENABLED;
27
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_SMPP_PORT;
28
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_SPLIT_ENABLED;
29
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_UCS2_ENCODING_PRIORITY;
30
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_UNBIND_TIMEOUT;
31
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_USE_SHORT_MESSAGE;
32
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_USE_TLV_MESSAGE_PAYLOAD;
33
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_WINDOW_MONITOR_INTERVAL;
34
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_WINDOW_SIZE;
35
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_WINDOW_WAIT_TIMEOUT;
36
import static fr.sii.ogham.sms.CloudhopperConstants.DEFAULT_WRITE_TIMEOUT;
37
import static fr.sii.ogham.sms.builder.cloudhopper.CloudhopperRetryablePredicates.canResendMessage;
38
import static fr.sii.ogham.sms.builder.cloudhopper.CloudhopperRetryablePredicates.canRetryConnecting;
39
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
42
43
import fr.sii.ogham.core.builder.MessagingBuilder;
44
import fr.sii.ogham.core.builder.configurer.ConfigurerFor;
45
import fr.sii.ogham.core.builder.configurer.MessagingConfigurer;
46
import fr.sii.ogham.core.builder.context.BuildContext;
47
import fr.sii.ogham.core.util.ClasspathUtils;
48
import fr.sii.ogham.sms.splitter.GsmMessageSplitter;
49
50
/**
51
 * Default configurer for Cloudhoppder that is automatically applied every time
52
 * a {@link MessagingBuilder} instance is created through
53
 * {@link MessagingBuilder#standard()}.
54
 * 
55
 * <p>
56
 * The configurer has a priority of 40000 in order to be applied after
57
 * templating configurers.
58
 * </p>
59
 * 
60
 * This configurer is applied only if {@code com.cloudhopper.smpp.SmppClient} is
61
 * present in the classpath. If not present, Cloudhopper implementation is not
62
 * registered at all.
63
 * 
64
 * <p>
65
 * This configurer inherits environment configuration (see
66
 * {@link BuildContext}).
67
 * </p>
68
 * 
69
 * <p>
70
 * This configurer applies the following configuration:
71
 * <ul>
72
 * <li>Configures SMPP protocol:
73
 * <ul>
74
 * <li>It uses one of "ogham.sms.cloudhopper.host" or "ogham.sms.smpp.host"
75
 * property if defined for SMPP server host address (IP or hostname)</li>
76
 * <li>It uses one of "ogham.sms.cloudhopper.port" or "ogham.sms.smpp.port"
77
 * property if defined for SMPP server port. Default port is 25</li>
78
 * <li>It uses "ogham.sms.cloudhopper.interface-version" property if defined for
79
 * the version of the protocol. Default is "3.4"</li>
80
 * </ul>
81
 * </li>
82
 * <li>Configures authentication:
83
 * <ul>
84
 * <li>It uses one of "ogham.sms.cloudhopper.system-id" or
85
 * "ogham.sms.smpp.system-id" property if defined for to identify an ESME (
86
 * External Short Message Entity) or an SMSC (Short Message Service Centre) at
87
 * bind time</li>
88
 * <li>It uses one of "ogham.sms.cloudhopper.password" or
89
 * "ogham.sms.smpp.password" property if defined for an optional password</li>
90
 * </ul>
91
 * </li>
92
 * <li>Configures text message encoding:
93
 * <ul>
94
 * <li>It enables <a href="https://en.wikipedia.org/wiki/GSM_03.38">GSM
95
 * 03.38</a> encoding support. It automatically guess the supported encoding in
96
 * order to use the minimum octets for the text message:
97
 * <ul>
98
 * <li>It can encode using GSM 7-bit default alphabet if the message contains
99
 * only characters defined in the table. Message is packed so the message can
100
 * have a maximum length of 160 characters instead of 140.<br>
101
 * It uses one of "ogham.sms.cloudhopper.encoder.gsm7bit-packed.priority" or
102
 * "ogham.sms.encoder.gsm7bit-packed.priority" to set priority of GSM 7-bit
103
 * encoding.<br>
104
 * Default priority is set to 0 (disabled by default because most of providers
105
 * don't support it).</li>
106
 * <li>It encodes using GSM 8-bit data encoding if the message contains only
107
 * characters that can be encoded on one octet.<br>
108
 * It uses one of "ogham.sms.cloudhopper.encoder.gsm8bit.priority" or
109
 * "ogham.sms.encoder.gsm8bit.priority" to set priority of GSM 8-bit
110
 * encoding.<br>
111
 * Default priority is set to 99000.</li>
112
 * <li>It encodes using UCS-2 encoding if the message contains special
113
 * characters (Unicode characters) that can't be encoded on one octet. Each
114
 * character is encoded on two octets.<br>
115
 * It uses one of "ogham.sms.cloudhopper.encoder.ucs2.priority" or
116
 * "ogham.sms.encoder.ucs2.priority" to set priority of GSM 8-bit encoding.<br>
117
 * Default priority is set to 98000.</li>
118
 * </ul>
119
 * </li>
120
 * <li>If for any reason the message can't be encoded with standard encoding or
121
 * auto-guess is disabled, the default behavior is used:
122
 * <ul>
123
 * <li>It uses "ogham.sms.cloudhopper.encoder.default-charset" property to
124
 * encode messages using "GSM" (8-bit) charset</li>
125
 * </ul>
126
 * </li>
127
 * </ul>
128
 * </li>
129
 * <li>Configures message splitting:
130
 * <ul>
131
 * <li>Uses {@link GsmMessageSplitter} to split messages according to encoding:
132
 * <ul>
133
 * <li>If message is encoded using GSM 7-bit alphabet (7 bits per character),
134
 * one message of 160 characters can fit in a single segment of 140 octets (160
135
 * characters * 7 / 8). If the message is over 160 characters, the message is
136
 * split in 140 octet segments including a 6 octet header meaning that each
137
 * segment can transport 153 characters ((140 - 6) * 8 / 7) and a partial
138
 * character (remaining octet).</li>
139
 * <li>If message is encoded using GSM 8-bit alphabet (1 octet per character),
140
 * one message of 140 characters can fit in a single segment of 140 octets. If
141
 * the message is over 140 characters, the message is split in 140 octet
142
 * segments including a 6 octet header meaning that each segment can transport
143
 * 134 characters (140 - 6).</li>
144
 * <li>If message is encoded using UCS-2 alphabet (2 octets per character), one
145
 * message of 70 characters can fit in a single segment of 140 octets (70
146
 * characters * 2). If the message is over 70 characters, the message is split
147
 * in 140 octet segments including a 6 octet header meaning that each segment
148
 * can transport 67 characters ((140 - 6) / 2).</li>
149
 * </ul>
150
 * </li>
151
 * </ul>
152
 * </li>
153
 * <li>Configures session management:
154
 * <ul>
155
 * <li>Timeouts through properties</li>
156
 * <li>The window management through properties</li>
157
 * <li>The connection retry handling through properties</li>
158
 * </ul>
159
 * </li>
160
 * </ul>
161
 * 
162
 * @author Aurélien Baudet
163
 *
164
 */
165
public final class DefaultCloudhopperConfigurer {
166
	private static final Logger LOG = LoggerFactory.getLogger(DefaultCloudhopperConfigurer.class);
167
168
	@ConfigurerFor(targetedBuilder = "standard", priority = DEFAULT_CLOUDHOPPER_CONFIGURER_PRIORITY)
169
	public static class CloudhopperConfigurer implements MessagingConfigurer {
170
		@Override
171
		public void configure(MessagingBuilder msgBuilder) {
172 5 1. configure : negated conditional → KILLED
2. configure : negated conditional → KILLED
3. configure : negated conditional → KILLED
4. configure : negated conditional → KILLED
5. configure : negated conditional → KILLED
			if (!canUseCloudhopper()) {
173
				LOG.debug("[{}] skip configuration", this);
174
				return;
175
			}
176
			LOG.debug("[{}] apply configuration", this);
177
			// add additional checks to indicate that a message should not be
178
			// retried in some circumstances
179
			msgBuilder.sms().autoRetry().retryable(canResendMessage()::and);
180
			// configure message sender
181
			CloudhopperBuilder builder = msgBuilder.sms().sender(CloudhopperBuilder.class);
182
			// @formatter:off
183
			builder
184
				.systemId().properties("${ogham.sms.cloudhopper.system-id}", "${ogham.sms.smpp.system-id}").and()
185
				.password().properties("${ogham.sms.cloudhopper.password}", "${ogham.sms.smpp.password}").and()
186
				.host().properties("${ogham.sms.cloudhopper.host}", "${ogham.sms.smpp.host}").and()
187
				.port().properties("${ogham.sms.cloudhopper.port}", "${ogham.sms.smpp.port}").defaultValue(overrideIfNotSet(DEFAULT_SMPP_PORT)).and()
188
				.bindType().properties("${ogham.sms.cloudhopper.bind-type}", "${ogham.sms.smpp.bind-type}").defaultValue(overrideIfNotSet(DEFAULT_BIND_TYPE)).and()
189
				.systemType().properties("${ogham.sms.cloudhopper.system-type}", "${ogham.sms.smpp.system-type}").and()
190
				.interfaceVersion().properties("${ogham.sms.cloudhopper.interface-version}").defaultValue(overrideIfNotSet(DEFAULT_INTERFACE_VERSION)).and()
191
				.userData()
192
					.useShortMessage().properties("${ogham.sms.cloudhopper.user-data.use-short-message}", "${ogham.sms.smpp.user-data.use-short-message}").defaultValue(overrideIfNotSet(DEFAULT_USE_SHORT_MESSAGE)).and()
193
					.useTlvMessagePayload().properties("${ogham.sms.cloudhopper.user-data.use-tlv-message-payload}", "${ogham.sms.smpp.user-data.use-tlv-message-payload}").defaultValue(overrideIfNotSet(DEFAULT_USE_TLV_MESSAGE_PAYLOAD)).and()
194
					.and()
195
				.encoder()
196
					// packed algorithm disabled by default because it is not supported by most of providers
197
					.gsm7bitPacked().properties("${ogham.sms.cloudhopper.encoder.gsm7bit-packed.priority}", "${ogham.sms.smpp.encoder.gsm7bit-packed.priority}").defaultValue(overrideIfNotSet(DEFAULT_GSM7BIT_PACKED_ENCODING_PRIORITY)).and()
198
					.gsm8bit().properties("${ogham.sms.cloudhopper.encoder.gsm8bit.priority}", "${ogham.sms.smpp.encoder.gsm8bit.priority}").defaultValue(overrideIfNotSet(DEFAULT_GSM8_ENCODING_PRIORITY)).and()
199
					.latin1().properties("${ogham.sms.cloudhopper.encoder.latin1.priority}", "${ogham.sms.smpp.encoder.latin1.priority}").defaultValue(overrideIfNotSet(DEFAULT_LATIN1_ENCODING_PRIORITY)).and()
200
					.ucs2().properties("${ogham.sms.cloudhopper.encoder.ucs2.priority}", "${ogham.sms.smpp.encoder.ucs2.priority}").defaultValue(overrideIfNotSet(DEFAULT_UCS2_ENCODING_PRIORITY)).and()
201
					.autoGuess().properties("${ogham.sms.cloudhopper.encoder.auto-guess.enable}", "${ogham.sms.smpp.encoder.auto-guess.enable}").defaultValue(overrideIfNotSet(DEFAULT_AUTO_GUESS_ENABLED)).and()
202
					.fallback().properties("${ogham.sms.cloudhopper.encoder.default-charset}", "${ogham.sms.smpp.encoder.default-charset}").defaultValue(overrideIfNotSet(DEFAULT_CHARSET)).and()
203
					.and()
204
				.splitter()
205
					.enable().properties("${ogham.sms.cloudhopper.split.enable}", "${ogham.sms.smpp.split.enable}", "${ogham.sms.split.enable}").defaultValue(overrideIfNotSet(DEFAULT_SPLIT_ENABLED)).and()
206
					.referenceNumber()
207
						.random()
208
						.and()
209
					.and()
210
				.dataCodingScheme()
211
					.auto().properties("${ogham.sms.cloudhopper.data-coding-scheme.auto.enable}", "${ogham.sms.smpp.data-coding-scheme.auto.enable}").defaultValue(overrideIfNotSet(DEFAULT_AUTO_DATA_CODING_SCHEME_ENABLED)).and()
212
					.value().properties("${ogham.sms.cloudhopper.data-coding-scheme.value}", "${ogham.sms.smpp.data-coding-scheme.value}").and()
213
					.and()
214
				.session()
215
					.sessionName().properties("${ogham.sms.cloudhopper.session.name}").and()
216
					.bindTimeout().properties("${ogham.sms.cloudhopper.session.bind-timeout}").defaultValue(overrideIfNotSet(DEFAULT_BIND_TIMEOUT)).and()
217
					.connectTimeout().properties("${ogham.sms.cloudhopper.session.connect-timeout}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_TIMEOUT)).and()
218
					.requestExpiryTimeout().properties("${ogham.sms.cloudhopper.session.request-expiry-timeout}").defaultValue(overrideIfNotSet(DEFAULT_REQUEST_EXPIRY_TIMEOUT)).and()
219
					.windowMonitorInterval().properties("${ogham.sms.cloudhopper.session.window-monitor-interval}").defaultValue(overrideIfNotSet(DEFAULT_WINDOW_MONITOR_INTERVAL)).and()
220
					.windowSize().properties("${ogham.sms.cloudhopper.session.window-size}").defaultValue(overrideIfNotSet(DEFAULT_WINDOW_SIZE)).and()
221
					.windowWait().properties("${ogham.sms.cloudhopper.session.window-wait-timeout}").defaultValue(overrideIfNotSet(DEFAULT_WINDOW_WAIT_TIMEOUT)).and()
222
					.writeTimeout().properties("${ogham.sms.cloudhopper.session.write-timeout}").defaultValue(overrideIfNotSet(DEFAULT_WRITE_TIMEOUT)).and()
223
					.responseTimeout().properties("${ogham.sms.cloudhopper.session.response-timeout}").defaultValue(overrideIfNotSet(DEFAULT_RESPONSE_TIMEOUT)).and()
224
					.unbindTimeout().properties("${ogham.sms.cloudhopper.session.unbind-timeout}").defaultValue(overrideIfNotSet(DEFAULT_UNBIND_TIMEOUT)).and()
225
					.reuseSession()
226
						.enable().properties("${ogham.sms.cloudhopper.session.reuse-session.enable}").defaultValue(overrideIfNotSet(DEFAULT_REUSE_SESSION_ENABLED)).and()
227
						.lastInteractionExpiration().properties("${ogham.sms.cloudhopper.session.reuse-session.last-interaction-expiration-delay}").defaultValue(overrideIfNotSet(DEFAULT_LAST_INTERACTION_EXPIRATION_DELAY)).and()
228
						.responseTimeout().properties("${ogham.sms.cloudhopper.session.reuse-session.response-timeout}").defaultValue(overrideIfNotSet(DEFAULT_ENQUIRE_LINK_REUSE_RESPONSE_TIMEOUT)).and()
229
						.and()
230
					.keepAlive()
231
						.enable().properties("${ogham.sms.cloudhopper.session.keep-alive.enable}").defaultValue(overrideIfNotSet(DEFAULT_KEEP_ALIVE_ENABLED)).and()
232
						.interval().properties("${ogham.sms.cloudhopper.session.keep-alive.request-interval}").defaultValue(overrideIfNotSet(DEFAULT_ENQUIRE_LINK_INTERVAL)).and()
233
						.responseTimeout().properties("${ogham.sms.cloudhopper.session.keep-alive.response-timeout}").defaultValue(overrideIfNotSet(DEFAULT_ENQUIRE_LINK_RESPONSE_TIMEOUT)).and()
234
						.connectAtStartup().properties("${ogham.sms.cloudhopper.session.keep-alive.connect-at-startup}").defaultValue(overrideIfNotSet(DEFAULT_KEEP_ALIVE_CONNECT_AT_STARTUP)).and()
235
						.maxConsecutiveTimeouts().properties("${ogham.sms.cloudhopper.session.keep-alive.max-consecutive-timeouts}").defaultValue(overrideIfNotSet(DEFAULT_KEEP_ALIVE_MAX_CONSECUTIVE_TIMEOUTS)).and()
236
						.and()
237
					.connectRetry()
238
						.retryable(canRetryConnecting())
239
						.fixedDelay()
240
							.maxRetries().properties("${ogham.sms.cloudhopper.session.connect-retry.max-attempts}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_MAX_RETRIES)).and()
241
							.delay().properties("${ogham.sms.cloudhopper.session.connect-retry.delay-between-attempts}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_RETRY_DELAY)).and()
242
							.and()
243
						.exponentialDelay()
244
							.maxRetries().properties("${ogham.sms.cloudhopper.session.connect-retry.max-attempts}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_MAX_RETRIES)).and()
245
							.initialDelay().properties("${ogham.sms.cloudhopper.session.connect-retry.exponential-initial-delay}").and()
246
							.and()
247
						.perExecutionDelay()
248
							.maxRetries().properties("${ogham.sms.cloudhopper.session.connect-retry.max-attempts}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_MAX_RETRIES)).and()
249
							.delays().properties("${ogham.sms.cloudhopper.session.connect-retry.per-execution-delays}").and()
250
							.and()
251
						.fixedInterval()
252
							.maxRetries().properties("${ogham.sms.cloudhopper.session.connect-retry.max-attempts}").defaultValue(overrideIfNotSet(DEFAULT_CONNECT_MAX_RETRIES)).and()
253
							.interval().properties("${ogham.sms.cloudhopper.session.connect-retry.execution-interval}");
254
			// @formatter:on
255
		}
256
257
		private static boolean canUseCloudhopper() {
258 6 1. canUseCloudhopper : replaced boolean return with true for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → SURVIVED
2. canUseCloudhopper : replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED
3. canUseCloudhopper : replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED
4. canUseCloudhopper : replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED
5. canUseCloudhopper : replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED
6. canUseCloudhopper : replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED
			return ClasspathUtils.exists("com.cloudhopper.smpp.SmppClient");
259
		}
260
	}
261
262
	private DefaultCloudhopperConfigurer() {
263
		super();
264
	}
265
}

Mutations

172

1.1
Location : configure
Killed by : oghamall.it.freemarker.StaticMethodAccessDisabledTest.smsUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamall.it.freemarker.StaticMethodAccessDisabledTest)
negated conditional → KILLED

2.2
Location : configure
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

3.3
Location : configure
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.smsUsingFreemarkerTemplateShouldBeAbleToCallStaticMethodsWithCustomVariableName(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
negated conditional → KILLED

4.4
Location : configure
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
negated conditional → KILLED

5.5
Location : configure
Killed by : oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest.smsUsingFreemarkerTemplateShouldResolveBeans(oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest)
negated conditional → KILLED

258

1.1
Location : canUseCloudhopper
Killed by : oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest.smsUsingFreemarkerTemplateShouldResolveBeans(oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest)
replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED

2.2
Location : canUseCloudhopper
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.smsUsingFreemarkerTemplateShouldBeAbleToCallStaticMethodsWithCustomVariableName(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED

3.3
Location : canUseCloudhopper
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED

4.4
Location : canUseCloudhopper
Killed by : oghamall.it.freemarker.StaticMethodAccessDisabledTest.smsUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamall.it.freemarker.StaticMethodAccessDisabledTest)
replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED

5.5
Location : canUseCloudhopper
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced boolean return with false for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → KILLED

6.6
Location : canUseCloudhopper
Killed by : none
replaced boolean return with true for fr/sii/ogham/sms/builder/cloudhopper/DefaultCloudhopperConfigurer$CloudhopperConfigurer::canUseCloudhopper → SURVIVED

Active mutators

Tests examined


Report generated by PIT OGHAM