public void ParsePercentsFactionParameterValueTest() { var parameterLink = new ParameterLink("autovacuum_vacuum_scale_factor"); var rawParameterValue = new RawRangeParameterValue("0.8", RawValueType.Real, (0, 100)); var parameterValueParser = GetService <IParameterValueParser>(); var parameterValue = parameterValueParser.Parse(parameterLink, rawParameterValue); Assert.IsInstanceOf <FractionParameterValue>(parameterValue); Assert.AreEqual(new IUnit.None(), parameterValue.Unit); Assert.AreEqual(parameterLink, parameterValue.Link); }
public void ParseFactionParameterValueTest() { var parameterLink = new ParameterLink("checkpoint_completion_target"); var rawParameterValue = new RawRangeParameterValue("0.5", RawValueType.Real, (0, 1)); var parameterValueParser = GetService <IParameterValueParser>(); var parameterValue = parameterValueParser.Parse(parameterLink, rawParameterValue); Assert.IsInstanceOf <FractionParameterValue>(parameterValue); Assert.AreEqual(new IUnit.None(), parameterValue.Unit); Assert.AreEqual(parameterLink, parameterValue.Link); }
public void ParseMemoryParameterValueTest() { var parameterLink = new ParameterLink("effective_cache_size"); var rawParameterValue = new RawRangeParameterValue("4GB", RawValueType.Integer, (1, 2147483647)); var parameterValueParser = GetService <IParameterValueParser>(); var parameterValue = parameterValueParser.Parse(parameterLink, rawParameterValue); Assert.IsInstanceOf <MemoryParameterValue>(parameterValue); // 4GB is less then 10GB, so it's normalized to megabytes. Assert.AreEqual(new IUnit.Mem(Memory.Unit.Megabytes), parameterValue.Unit); Assert.AreEqual(parameterLink, parameterValue.Link); }
public void ParseTimeSpanParameterValueTest() { var parameterLink = new ParameterLink("autovacuum_naptime"); var rawParameterValue = new RawRangeParameterValue("30s", RawValueType.Integer, (1, 2147483)); var parameterValueParser = GetService <IParameterValueParser>(); var parameterValue = parameterValueParser.Parse(parameterLink, rawParameterValue); Assert.IsInstanceOf <TimeSpanParameterValue>(parameterValue); // 30s is more then 10s, so it's normalized to seconds. Assert.AreEqual(new IUnit.TimeSpan(PositiveTimeSpan.Unit.Seconds), parameterValue.Unit); Assert.AreEqual(parameterLink, parameterValue.Link); }
public void ParseIntegerParameterValueWithRangeTest() { const int underlyingValue = 100; var parameterLink = new ParameterLink("max_connections"); var rawParameterValue = new RawRangeParameterValue(underlyingValue.ToString(), RawValueType.Integer, (1, 262143)); var parameterValueParser = GetService <IParameterValueParser>(); var parameterValue = parameterValueParser.Parse(parameterLink, rawParameterValue); Assert.IsInstanceOf <IntegerParameterValue>(parameterValue); Assert.AreEqual(new IUnit.None(), parameterValue.Unit); Assert.AreEqual(parameterLink, parameterValue.Link); Assert.AreEqual(underlyingValue, ((IntegerParameterValue)parameterValue).Value); }
/// <inheritdoc /> async Task <RawParameterValue> IDatabaseServer.GetRawParameterValueAsync(IParameterLink parameterLink) { var commandText = string.Intern($@" select current_setting(name), vartype, min_val, max_val from pg_catalog.pg_settings where name = @{nameof(IParameterLink.Name)};" ); var connection = await Connection(); var(value, typeString, minValue, maxValue) = await connection .QuerySingleAsync <(NonEmptyString, NonEmptyString, decimal?, decimal?)>( commandText, new { parameterLink.Name }); var rawType = typeString.ByStringRepresentation <RawValueType>(); return(minValue.HasValue && maxValue.HasValue ? new RawRangeParameterValue(value, rawType, (minValue.Value, maxValue.Value)) : new RawParameterValue(value, rawType)); }