Class TestData
- All Implemented Interfaces:
DataSourceFactory
public final class TestData extends java.lang.Object implements DataSourceFactory
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 LDClients.
- Since:
- 5.1.0
- See Also:
FileData
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTestData.FlagBuilderA builder for feature flag configurations to be used withTestData. -
Method Summary
Modifier and Type Method Description DataSourcecreateDataSource(ClientContext context, DataSourceUpdates dataSourceUpdates)Called internally by the SDK to associate this test data source with anLDClientinstance.static TestDatadataSource()Creates a new instance of the test data source.TestData.FlagBuilderflag(java.lang.String key)Creates or copies aTestData.FlagBuilderfor building a test flag configuration.TestDataupdate(TestData.FlagBuilder flagBuilder)Updates the test data with the specified flag configuration.TestDataupdateStatus(DataSourceStatusProvider.State newState, DataSourceStatusProvider.ErrorInfo newError)Simulates a change in the data source status.
-
Method Details
-
dataSource
Creates a new instance of the test data source.See
TestDatafor details.- Returns:
- a new configurable test data source
-
flag
Creates or copies aTestData.FlagBuilderfor building a test flag configuration.If this flag key has already been defined in this
TestDatainstance, 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
trueandfalsevariations, istruefor all users when targeting is turned on andfalseotherwise, and currently has targeting turned on. You can change any of those properties, and provide more complex behavior, using theTestData.FlagBuildermethods.Once you have set the desired configuration, pass the builder to
update(FlagBuilder).- Parameters:
key- the flag key- Returns:
- a flag configuration builder
- See Also:
update(FlagBuilder)
-
update
Updates the test data with the specified flag configuration.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
LDClientinstance(s) that you have already configured to use thisTestData. If noLDClienthas been started yet, it simply adds this flag to the test data which will be provided to anyLDClientthat you subsequently configure.Any subsequent changes to this
TestData.FlagBuilderinstance do not affect the test data, unless you callupdate(FlagBuilder)again.- Parameters:
flagBuilder- a flag configuration builder- Returns:
- the same
TestDatainstance - See Also:
flag(String)
-
updateStatus
public TestData updateStatus(DataSourceStatusProvider.State newState, DataSourceStatusProvider.ErrorInfo newError)Simulates a change in the data source status.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 theTestDatadata source from working, so even if you have simulated an outage, callingupdate(FlagBuilder)will still send updates.- Parameters:
newState- one of the constants defined byDataSourceStatusProvider.StatenewError- anDataSourceStatusProvider.ErrorInfoinstance, or null- Returns:
- the same
TestDatainstance
-
createDataSource
Called internally by the SDK to associate this test data source with anLDClientinstance. You do not need to call this method.- Specified by:
createDataSourcein interfaceDataSourceFactory- Parameters:
context- allows access to the client configurationdataSourceUpdates- the component pushes data into the SDK via this interface- Returns:
- an
DataSource
-