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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions