Valve is a simple to integrate sampling and code flow control library, which can perform sampling on an unknown size of identifiers. It was developed to fullfill the need to perform percentage based roll out of a certain feature for users.
String identifier = "useremail@email.com" // unique identifier per sample like user_id
int percentEnabled = 20; // percentage for which feature should be enabled
if (Valve.Valve.Control(identifier, percentEnabled))
{
Console.WriteLine("Feature is enabled for identifier.");
}
else
{
Console.WriteLine("Fearure is not available for this identifier.");
}
The below charts are the result of 10 random tests for different data sizes.
From above three charts we can analyze that when data size is growing, the release percenatge is more close to the target percentage.
Given a unique identifier and roll out percentage, decides weather to be sampled or not to be sampled.
You can configure Valve with all your features at the application start up, and dynamically enable or disable it during runtime.
For bugs, questions and discussions please use the GitHub Issues.
Copyright 2020 Benefactor, Org.
Licensed under the GNU GENERAL PUBLIC LICENSE Version 3 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
https://github.com/benefactor-org/valve-dotnet-core/blob/master/LICENSE
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.