[6a3a178] | 1 | /*
|
---|
| 2 | * This is a AssemblyScript port of the original Java version, which was written by
|
---|
| 3 | * Gil Tene as described in
|
---|
| 4 | * https://github.com/HdrHistogram/HdrHistogram
|
---|
| 5 | * and released to the public domain, as explained at
|
---|
| 6 | * http://creativecommons.org/publicdomain/zero/1.0/
|
---|
| 7 | */
|
---|
| 8 |
|
---|
| 9 | import { decodeFromByteBuffer, encodeIntoByteBuffer } from "../encoding";
|
---|
| 10 | import { Histogram32, Uint32Storage } from "../Histogram";
|
---|
| 11 | import ByteBuffer from "../ByteBuffer";
|
---|
| 12 |
|
---|
| 13 | describe("Histogram encoding", () => {
|
---|
| 14 | it("should encode filling a byte buffer", () => {
|
---|
| 15 | // given
|
---|
| 16 | const histogram = new Histogram32(1, 9007199254740991, 2);
|
---|
| 17 | histogram.recordValue(42);
|
---|
| 18 | const buffer = ByteBuffer.allocate();
|
---|
| 19 | // when
|
---|
| 20 | const encodedSize = encodeIntoByteBuffer<Uint32Storage, u32>(
|
---|
| 21 | histogram,
|
---|
| 22 | buffer
|
---|
| 23 | );
|
---|
| 24 | // then
|
---|
| 25 | expect(encodedSize).toBe(42);
|
---|
| 26 | });
|
---|
| 27 |
|
---|
| 28 | it("should encode / decode", () => {
|
---|
| 29 | // given
|
---|
| 30 | const histogram = new Histogram32(1, 9007199254740991, 2);
|
---|
| 31 | histogram.recordValue(42);
|
---|
| 32 | histogram.recordValue(7);
|
---|
| 33 | histogram.recordValue(77);
|
---|
| 34 | const buffer = ByteBuffer.allocate();
|
---|
| 35 | const encodedSize = encodeIntoByteBuffer<Uint32Storage, u32>(
|
---|
| 36 | histogram,
|
---|
| 37 | buffer
|
---|
| 38 | );
|
---|
| 39 | buffer.position = 0;
|
---|
| 40 | // when
|
---|
| 41 | const result = decodeFromByteBuffer<Uint32Storage, u32>(buffer, 0);
|
---|
| 42 | // then
|
---|
| 43 | expect(result.outputPercentileDistribution()).toBe(
|
---|
| 44 | histogram.outputPercentileDistribution()
|
---|
| 45 | );
|
---|
| 46 | });
|
---|
| 47 | it("should encode / decode bis", () => {
|
---|
| 48 | // given
|
---|
| 49 | const histogram = new Histogram32(1, 9007199254740991, 2);
|
---|
| 50 | histogram.recordValue(42);
|
---|
| 51 | histogram.recordValue(7);
|
---|
| 52 | histogram.recordValue(77);
|
---|
| 53 | const data = histogram.encode();
|
---|
| 54 | // when
|
---|
| 55 | const buffer = ByteBuffer.allocate();
|
---|
| 56 | buffer.data = data;
|
---|
| 57 | buffer.position = 0;
|
---|
| 58 | const result = decodeFromByteBuffer<Uint32Storage, u32>(buffer, 0);
|
---|
| 59 | // then
|
---|
| 60 | expect(result.outputPercentileDistribution()).toBe(
|
---|
| 61 | histogram.outputPercentileDistribution()
|
---|
| 62 | );
|
---|
| 63 | });
|
---|
| 64 | xit("should encode / decode without any assemblyscript crash", () => {
|
---|
| 65 | // given
|
---|
| 66 | const histogram = new Histogram32(1, 9007199254740991, 3);
|
---|
| 67 | histogram.autoResize = true;
|
---|
| 68 | histogram.recordValue(32415482);
|
---|
| 69 | const data = histogram.encode();
|
---|
| 70 | // when
|
---|
| 71 | const buffer = ByteBuffer.allocate();
|
---|
| 72 | buffer.data = data;
|
---|
| 73 | buffer.position = 0;
|
---|
| 74 | const result = decodeFromByteBuffer<Uint32Storage, u32>(buffer, 0);
|
---|
| 75 | // then
|
---|
| 76 | expect(result.outputPercentileDistribution()).toBe(
|
---|
| 77 | histogram.outputPercentileDistribution()
|
---|
| 78 | );
|
---|
| 79 | });
|
---|
| 80 | });
|
---|