Skip to content

Refactor backing storage and add frame construction functionality #49

@kortemik

Description

@kortemik

Description
Refactor rlo_06 so that:

Functional requirements

  • It takes ByteBuffer[] as an input instead of a Streamable (existing interface within rlo_06)
  • There is separate linefeed framing package that can be used before feeding data to rlo_06. Currently linefeed framing is within MsgFunction object.
  • Add functionality from https://github.com/teragrep/rlo_14 so rfc5424 frames can be constructed as well instead of being only parsed.
    • rlo_06 replaces rlo_14
    • allow providing ByteBuffer[] in addition to Strings as arguments

Technical requirements

[INFO] Running com.teragrep.rlo_06.tests.PerformanceTest
testShortPayloadPerformance: time taken 28916 for 10000000, total RPS: 345829.28, 6818.0 megabytes (235.7864 MB/s)
testMediumLongSDPerformance: time taken 405 for 25000, total RPS: 61728.395, 109.0 megabytes (269.1358 MB/s)
testDashes: time taken 15509 for 100000000, total RPS: 6447869.0, 1525.0 megabytes (98.33 MB/s)
testLongPayloadPerformance: time taken 18215 for 50000, total RPS: 2744.9905, 6137.0 megabytes (336.9201 MB/s)
testVeryLongSDPerformance: time taken 18494 for 500, total RPS: 27.035795, 740.0 megabytes (40.012978 MB/s)

Administrative requirements

  • It respects Elegant Object principles https://www.elegantobjects.org/
  • Update readme accordingly
  • Comment the code
  • Use object names describing the responsibilities of an object
  • Expected values and input data in the test cases are not modified
  • New test cases are added as needed.
  • Allocate objects as few responsibilities as feasible.
  • Use test drive development (TDD)
  • Provide holistic commits with clear commit messages

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions