Skip to content
This repository was archived by the owner on May 24, 2024. It is now read-only.

Fee stats changes #215

Merged
merged 2 commits into from
Jan 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion stellar-dotnet-sdk-console/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ private static void ShowTransactionRecords(List<TransactionResponse> transaction

private static void ShowTransactionRecord(TransactionResponse tran)
{
Console.WriteLine($"Ledger: {tran.Ledger}, Hash: {tran.Hash}, Fee Paid: {tran.FeePaid}, Pt:{tran.PagingToken}");
Console.WriteLine($"Ledger: {tran.Ledger}, Hash: {tran.Hash}, Fee Paid: {tran.FeeCharged}, Pt:{tran.PagingToken}");
}

private static async void ShowOperationResponse(Server server, object sender, LedgerResponse lr)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,34 +25,48 @@ public void TestSerializeDeserialize()
{
var json = File.ReadAllText(Path.Combine("testdata", "operationFeeStats.json"));
var stats = JsonConvert.DeserializeObject<OperationFeeStatsResponse>(json);

var serialized = JsonConvert.SerializeObject(stats);
var back = JsonConvert.DeserializeObject<OperationFeeStatsResponse>(serialized);

Assert.AreEqual(stats.Min, back.Min);
Assert.AreEqual(stats.Mode, back.Mode);

Assert.AreEqual(stats.LastLedger, back.LastLedger);
Assert.AreEqual(stats.LastLedgerBaseFee, back.LastLedgerBaseFee);
Assert.AreEqual(stats.LedgerCapacityUsage, back.LedgerCapacityUsage);
}

public static void AssertTestData(OperationFeeStatsResponse stats)
{
Assert.AreEqual(20882791L, stats.LastLedger);
Assert.AreEqual(100L, stats.LastLedgerBaseFee);
Assert.AreEqual(101L, stats.Min);
Assert.AreEqual(102L, stats.Mode);
Assert.AreEqual(103L, stats.P10);
Assert.AreEqual(104L, stats.P20);
Assert.AreEqual(105L, stats.P30);
Assert.AreEqual(106L, stats.P40);
Assert.AreEqual(107L, stats.P50);
Assert.AreEqual(108L, stats.P60);
Assert.AreEqual(109L, stats.P70);
Assert.AreEqual(110L, stats.P80);
Assert.AreEqual(111L, stats.P90);
Assert.AreEqual(112L, stats.P95);
Assert.AreEqual(113L, stats.P99);
Assert.AreEqual(0.97m, stats.LedgerCapacityUsage);

}

//Assert Fee Charged Data
Assert.AreEqual(1, stats.FeeCharged.Min);
Assert.AreEqual(100L, stats.FeeCharged.Mode);
Assert.AreEqual(10L, stats.FeeCharged.P10);
Assert.AreEqual(20L, stats.FeeCharged.P20);
Assert.AreEqual(30L, stats.FeeCharged.P30);
Assert.AreEqual(40L, stats.FeeCharged.P40);
Assert.AreEqual(50L, stats.FeeCharged.P50);
Assert.AreEqual(60L, stats.FeeCharged.P60);
Assert.AreEqual(70L, stats.FeeCharged.P70);
Assert.AreEqual(80L, stats.FeeCharged.P80);
Assert.AreEqual(90L, stats.FeeCharged.P90);
Assert.AreEqual(95L, stats.FeeCharged.P95);
Assert.AreEqual(99L, stats.FeeCharged.P99);

//Assert Max Fee Data
Assert.AreEqual(1L, stats.MaxFee.Min);
Assert.AreEqual(100L, stats.MaxFee.Mode);
Assert.AreEqual(10L, stats.MaxFee.P10);
Assert.AreEqual(20L, stats.MaxFee.P20);
Assert.AreEqual(30L, stats.MaxFee.P30);
Assert.AreEqual(40L, stats.MaxFee.P40);
Assert.AreEqual(50L, stats.MaxFee.P50);
Assert.AreEqual(60L, stats.MaxFee.P60);
Assert.AreEqual(70L, stats.MaxFee.P70);
Assert.AreEqual(80L, stats.MaxFee.P80);
Assert.AreEqual(90L, stats.MaxFee.P90);
Assert.AreEqual(95L, stats.MaxFee.P95);
Assert.AreEqual(99L, stats.MaxFee.P99);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public void TestDeserialize()
var transaction = JsonSingleton.GetInstance<TransactionResponse>(json);

AssertTestData(transaction);
Assert.AreEqual(100L, transaction.FeePaid);
Assert.AreEqual(100L, transaction.FeeCharged);
Assert.AreEqual(1050L, transaction.MaxFee);
}
Expand All @@ -27,7 +26,6 @@ public void TestDeserializeOfVersionBefore020()
var json = File.ReadAllText(Path.Combine("testdata", "transactionTransactionPre020.json"));
var transaction = JsonSingleton.GetInstance<TransactionResponse>(json);
AssertTestData(transaction);
Assert.AreEqual(100L, transaction.FeePaid);
Assert.AreEqual(0L, transaction.FeeCharged);
Assert.AreEqual(0L, transaction.MaxFee);
}
Expand All @@ -42,7 +40,6 @@ public void TestSerializeDeserialize()

Assert.IsTrue(back.Successful);
AssertTestData(back);
Assert.AreEqual(100L, transaction.FeePaid);
Assert.AreEqual(100L, transaction.FeeCharged);
Assert.AreEqual(1050L, transaction.MaxFee);
}
Expand Down
47 changes: 33 additions & 14 deletions stellar-dotnet-sdk-test/testdata/operationFeeStats.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,37 @@
{
"last_ledger": "20882791",
"last_ledger_base_fee": "100",
"min_accepted_fee": "101",
"mode_accepted_fee": "102",
"p10_accepted_fee": "103",
"p20_accepted_fee": "104",
"p30_accepted_fee": "105",
"p40_accepted_fee": "106",
"p50_accepted_fee": "107",
"p60_accepted_fee": "108",
"p70_accepted_fee": "109",
"p80_accepted_fee": "110",
"p90_accepted_fee": "111",
"p95_accepted_fee": "112",
"p99_accepted_fee": "113",
"ledger_capacity_usage": "0.97"
"ledger_capacity_usage": "0.97",
"fee_charged": {
"max": "100",
"min": "1",
"mode": "100",
"p10": "10",
"p20": "20",
"p30": "30",
"p40": "40",
"p50": "50",
"p60": "60",
"p70": "70",
"p80": "80",
"p90": "90",
"p95": "95",
"p99": "99"
},
"max_fee": {
"max": "100",
"min": "1",
"mode": "100",
"p10": "10",
"p20": "20",
"p30": "30",
"p40": "40",
"p50": "50",
"p60": "60",
"p70": "70",
"p80": "80",
"p90": "90",
"p95": "95",
"p99": "99"
}
}
129 changes: 74 additions & 55 deletions stellar-dotnet-sdk/responses/OperationFeeStatsResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,73 +4,92 @@ namespace stellar_dotnet_sdk.responses
{
public class OperationFeeStatsResponse : Response
{
[JsonProperty(PropertyName = "min_accepted_fee")]
public long Min { get; }

[JsonProperty(PropertyName = "mode_accepted_fee")]
public long Mode { get; }

[JsonProperty(PropertyName = "p10_accepted_fee")]
public long P10 { get; }

[JsonProperty(PropertyName = "p20_accepted_fee")]
public long P20 { get; }

[JsonProperty(PropertyName = "p30_accepted_fee")]
public long P30 { get; }

[JsonProperty(PropertyName = "p40_accepted_fee")]
public long P40 { get; }

[JsonProperty(PropertyName = "p50_accepted_fee")]
public long P50 { get; }

[JsonProperty(PropertyName = "p60_accepted_fee")]
public long P60 { get; }

[JsonProperty(PropertyName = "p70_accepted_fee")]
public long P70 { get; }

[JsonProperty(PropertyName = "p80_accepted_fee")]
public long P80 { get; }

[JsonProperty(PropertyName = "p90_accepted_fee")]
public long P90 { get; }

[JsonProperty(PropertyName = "p95_accepted_fee")]
public long P95 { get; }

[JsonProperty(PropertyName = "p99_accepted_fee")]
public long P99 { get; }

[JsonProperty(PropertyName = "ledger_capacity_usage")]
public decimal LedgerCapacityUsage { get; }

[JsonProperty(PropertyName = "last_ledger_base_fee")]
public long LastLedgerBaseFee { get; }

[JsonProperty(PropertyName = "last_ledger")]
public uint LastLedger { get; }

public OperationFeeStatsResponse(long min, long mode, long p10, long p20, long p30, long p40, long p50, long p60,
long p70, long p80, long p90, long p95, long p99, decimal ledgerCapacityUsage, long lastLedgerBaseFee, uint lastLedger)
[JsonProperty(PropertyName = "fee_charged")]
public FeeStatsResponseData FeeCharged { get; private set; }

[JsonProperty(PropertyName = "max_fee")]
public FeeStatsResponseData MaxFee { get; private set; }

public OperationFeeStatsResponse(decimal ledgerCapacityUsage, long lastLedgerBaseFee, uint lastLedger, FeeStatsResponseData feeCharged, FeeStatsResponseData maxFee)
{
Min = min;
Mode = mode;
P10 = p10;
P20 = p20;
P30 = p30;
P40 = p40;
P50 = p50;
P60 = p60;
P70 = p70;
P80 = p80;
P90 = p90;
P95 = p95;
P99 = p99;
LedgerCapacityUsage = ledgerCapacityUsage;
LastLedgerBaseFee = lastLedgerBaseFee;
LastLedger = lastLedger;
FeeCharged = feeCharged;
MaxFee = maxFee;
}

public class FeeStatsResponseData
{
[JsonProperty(PropertyName = "max")]
public long Max { get; }

[JsonProperty(PropertyName = "min")]
public long Min { get; }

[JsonProperty(PropertyName = "mode")]
public long Mode { get; }

[JsonProperty(PropertyName = "p10")]
public long P10 { get; }

[JsonProperty(PropertyName = "p20")]
public long P20 { get; }

[JsonProperty(PropertyName = "p30")]
public long P30 { get; }

[JsonProperty(PropertyName = "p40")]
public long P40 { get; }

[JsonProperty(PropertyName = "p50")]
public long P50 { get; }

[JsonProperty(PropertyName = "p60")]
public long P60 { get; }

[JsonProperty(PropertyName = "p70")]
public long P70 { get; }

[JsonProperty(PropertyName = "p80")]
public long P80 { get; }

[JsonProperty(PropertyName = "p90")]
public long P90 { get; }

[JsonProperty(PropertyName = "p95")]
public long P95 { get; }

[JsonProperty(PropertyName = "p99")]
public long P99 { get; }

public FeeStatsResponseData(long max, long min, long mode, long p10, long p20, long p30, long p40, long p50, long p60,
long p70, long p80, long p90, long p95, long p99)
{
Max = max;
Min = min;
Mode = mode;
P10 = p10;
P20 = p20;
P30 = p30;
P40 = p40;
P50 = p50;
P60 = p60;
P70 = p70;
P80 = p80;
P90 = p90;
P95 = p95;
P99 = p99;
}
}
}
}
8 changes: 0 additions & 8 deletions stellar-dotnet-sdk/responses/TransactionResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,9 @@ public class TransactionResponse : Response, IPagingToken
[JsonProperty(PropertyName = "source_account_sequence")]
public long SourceAccountSequence { get; private set; }

[JsonProperty(PropertyName = "fee_paid")]
private long? _feePaid { get; set; }

[Obsolete("Use FeeCharged unless you are using Horizon < 0.20")]
public long FeePaid => _feePaid ?? FeeCharged;

[JsonProperty(PropertyName = "fee_charged")]
public long FeeCharged { get; set; }

[DefaultValue(0)]
[JsonProperty(PropertyName = "max_fee")]
public long MaxFee { get; private set; }

Expand Down Expand Up @@ -127,7 +120,6 @@ public TransactionResponse(string hash, uint ledger, string createdAt, string so
Successful = successful;
PagingToken = pagingToken;
SourceAccountSequence = sourceAccountSequence;
_feePaid = feePaid;
OperationCount = operationCount;
EnvelopeXdr = envelopeXdr;
ResultXdr = resultXdr;
Expand Down