public final class TestData extends java.lang.Object implements ComponentConfigurer<DataSource>
Unlike FileData
, this mechanism does not use any external resources. It provides only
the data that the application has put into it using the update(FlagBuilder)
method.
TestData td = TestData.dataSource();
td.update(testData.flag("flag-key-1").booleanFlag().variationForAllUsers(true));
LDConfig config = new LDConfig.Builder()
.dataSource(td)
.build();
LDClient client = new LDClient(sdkKey, config);
// flags can be updated at any time:
td.update(testData.flag("flag-key-2")
.variationForUser("some-user-key", true)
.fallthroughVariation(false));
The above example uses a simple boolean flag, but more complex configurations are possible using
the methods of the TestData.FlagBuilder
that is returned by flag(String)
. TestData.FlagBuilder
supports many of the ways a flag can be configured on the LaunchDarkly dashboard, but does not
currently support 1. rule operators other than "in" and "not in", or 2. percentage rollouts.
If the same TestData
instance is used to configure multiple LDClient
instances,
any changes made to the data will propagate to all of the LDClient
s.
FileData
Modifier and Type | Class and Description |
---|---|
static class |
TestData.FlagBuilder
A builder for feature flag configurations to be used with
TestData . |
Modifier and Type | Method and Description |
---|---|
DataSource |
build(ClientContext context)
Called internally by the SDK to create an implementation instance.
|
static TestData |
dataSource()
Creates a new instance of the test data source.
|
TestData |
delete(java.lang.String key)
Deletes a specific flag from the test data by create a versioned tombstone.
|
TestData.FlagBuilder |
flag(java.lang.String key)
Creates or copies a
TestData.FlagBuilder for building a test flag configuration. |
TestData |
update(TestData.FlagBuilder flagBuilder)
Updates the test data with the specified flag configuration.
|
TestData |
updateStatus(DataSourceStatusProvider.State newState,
DataSourceStatusProvider.ErrorInfo newError)
Simulates a change in the data source status.
|
public static TestData dataSource()
See TestData
for details.
public TestData.FlagBuilder flag(java.lang.String key)
TestData.FlagBuilder
for building a test flag configuration.
If this flag key has already been defined in this TestData
instance, then the builder
starts with the same configuration that was last provided for this flag.
Otherwise, it starts with a new default configuration in which the flag has true
and
false
variations, is true
for all users when targeting is turned on and
false
otherwise, and currently has targeting turned on. You can change any of those
properties, and provide more complex behavior, using the TestData.FlagBuilder
methods.
Once you have set the desired configuration, pass the builder to update(FlagBuilder)
.
key
- the flag keyupdate(FlagBuilder)
public TestData delete(java.lang.String key)
This has the same effect as if a flag were removed on the LaunchDarkly dashboard.
It immediately propagates the flag change to any LDClient
instance(s) that you have
already configured to use this TestData
. If no LDClient
has been started yet,
it simply adds tombstone to the test data which will be provided to any LDClient
that
you subsequently configure.
key
- the flag keypublic TestData update(TestData.FlagBuilder flagBuilder)
This has the same effect as if a flag were added or modified on the LaunchDarkly dashboard.
It immediately propagates the flag change to any LDClient
instance(s) that you have
already configured to use this TestData
. If no LDClient
has been started yet,
it simply adds this flag to the test data which will be provided to any LDClient
that
you subsequently configure.
Any subsequent changes to this TestData.FlagBuilder
instance do not affect the test data,
unless you call update(FlagBuilder)
again.
flagBuilder
- a flag configuration builderTestData
instanceflag(String)
public TestData updateStatus(DataSourceStatusProvider.State newState, DataSourceStatusProvider.ErrorInfo newError)
Use this if you want to test the behavior of application code that uses
LDClient.getDataSourceStatusProvider()
to track whether the data
source is having problems (for example, a network failure interruptsingthe streaming connection). It
does not actually stop the TestData
data source from working, so even if you have simulated
an outage, calling update(FlagBuilder)
will still send updates.
newState
- one of the constants defined by DataSourceStatusProvider.State
newError
- an DataSourceStatusProvider.ErrorInfo
instance,
or nullTestData
instancepublic DataSource build(ClientContext context)
ComponentConfigurer
build
in interface ComponentConfigurer<DataSource>
context
- provides configuration properties and other components from the current
SDK client instance