-
Notifications
You must be signed in to change notification settings - Fork 180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add test for jinja template test #177
Conversation
GordonWang
commented
Apr 23, 2019
- clean up the logic about sampleDir and jinja_template_dir setting
- Add functional test for jinja template generator
- Fixes [BUG] can not use conditional expression in for loop in the jinja template #174
- Fixes [BUG] default jinja template dir is not correctly resolved when sampleDir is set in conf file #167
s.sampleDir = os.path.join(self.configfile, 'samples') | ||
else: | ||
s.sampleDir = os.path.join(os.getcwd(), 'samples') | ||
base_dir = os.path.dirname(self.configfile) if os.path.isdir(self.configfile) else os.path.dirname(os.path.dirname(self.configfile)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this part is changed to get the sampleDir according to the conf file directory.
for raw_line in self.jinja_stream: | ||
# trim the newline char for jinja output | ||
# it is quite normal to output empty newlines in jinja | ||
line = raw_line.strip() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need to trim the newline and empty lines for the output of jinja template.
Because for each validate event, we assume it is a one line json string which has the format
{ 'time': xxx, 'raw': xxx, 'sourcetype': sss}
skipping empty lines and breaking the loop is the root cause of #174
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how do I do multiline events then? We don't want to trim "every" "\n" just the ones where the only thing in the line is "\n".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see the issue and get what you're trying to solve, but I don't think we can just use .strip(), gotta be another way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To generate multiline events in the ‘raw’ field in one json formatted events, use can do this in the jinja template directly. Just like this
{% for _ in range(0, large_number) %}
{%- time_now -%}
{"_time":"{{ time_now_epoch }}", "_raw":"{{ time_now_formatted }}this is the first line, seq: {{loop.index}}/{{large_number}}\nthis is the second line, seq: {{loop.index}}/{{large_number}}\nthis is the thrid line, seq: {{loop.index}}/{{large_number}}"}
{% endfor %}
the output of this jinja template is
2019-04-24T10:47:35this is the first line, seq: 1/4
this is the second line, seq: 1/4
this is the thrid line, seq: 1/4
2019-04-24T10:47:35this is the first line, seq: 2/4
this is the second line, seq: 2/4
this is the thrid line, seq: 2/4
2019-04-24T10:47:35this is the first line, seq: 3/4
this is the second line, seq: 3/4
this is the thrid line, seq: 3/4
2019-04-24T10:47:35this is the first line, seq: 4/4
this is the second line, seq: 4/4
this is the thrid line, seq: 4/4
Make sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should also say, are we sure we want to force people to write this single line, instead of letting them just hit return on the template? https://github.com/splunk/eventgen/blob/develop/tests/sample_eventgen_conf/jinja/templates/test_jinja_loop.template#L4. Specifically, doesn't it make sense to just hit return and put them on a new line?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No worries. User can hit the enter key to make the new line directly in jinja template file.
Jinja engine will keep what it is in your template file and render the output. No changes for newline and whitespace.
So, this template
{% for _ in range(0, large_number) %}
{%- time_now -%}
{"_time":"{{ time_now_epoch }}", "_raw":"{{ time_now_formatted }}this is the first line, seq: {{loop.index}}/{{large_number}}
this is the second line, seq: {{loop.index}}/{{large_number}}
this is the thrid line, seq: {{loop.index}}/{{large_number}}"}
{% endfor %}
the output is
2019-04-24T15:58:23this is the first line, seq: 1/4
this is the second line, seq: 1/4
this is the thrid line, seq: 1/4
2019-04-24T15:58:23this is the first line, seq: 2/4
this is the second line, seq: 2/4
this is the thrid line, seq: 2/4
2019-04-24T15:58:23this is the first line, seq: 3/4
this is the second line, seq: 3/4
this is the thrid line, seq: 3/4
2019-04-24T15:58:23this is the first line, seq: 4/4
this is the second line, seq: 4/4
this is the thrid line, seq: 4/4
disabled = true | false | ||
* Like what it looks like. Will disable event generation for this sample. | ||
|
||
sampleDir = <dir> | ||
* Set a different directory to look for samples in | ||
* Set a different directory to look for samples in. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
describe how we resolve sampleDir
@@ -394,23 +398,28 @@ latest = <time-str> | |||
############################# | |||
|
|||
jinja_template_dir = <str> | |||
* directory name inside the current eventgen.conf dir where jinja templates can be located. | |||
* default template directory is <bundle>/samples/templates if not defined. | |||
* directory where jinja templates can be located. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
describe how to resolve jinja_template_dir
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verified on my local env.
all FT passed. |
* Fix jinja template bug under SA-Eventgen app * Feature timeMultiple (#141) * Adjusting interval with timeMultiple * Update issue templates add the bug report and feature request issue templates * changing the stanzas to produce data * Windbag generator/count + end=0 edge cases (#145) * Generator handling for count = -1, end = 0 working properly * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * [Docs] update contribute docs (#148) * [Docs] update contribute docs * [Docs] update the contribute * Fix make docs bug and summary anchor link error * init unittest * [Build] add ut for timeparser functions * Add more UT for config module * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * Update docs * Post-PEP8 Fixes (#157) * skip sort, gitignore 3rd party libs * fixed yapf ignore, ran format across repo * Issue 160 (#163) * Fixed timer and token * Added a conditional for end=-1 * Update eventgentimer.py * Fixed timer and token (#162) * add extendIndexes feature (#154) * add extendIndexes feature * set extendIndexes as a list value * correct log level * upate doc, change num to weight * Test fix (#168) * Add sample functional test for replay mode * Add token replacement functional tests * skip failed case * Added a timeout * created a results dir * Update version.json * Fix previous pep8 format regression bug (#171) * Fix merge conflict bug * Delete tool orca related part (#178) * add test for jinja template test (#177) * clean up the logic about sampleDir and jinja_template_dir setting Add functional test for jinja template generator Fixes #174 Fixes #167 * revert the change about token, sample mode test cases * merge the change from develop branch * merge test conf from develop branch * use urllib 1.24.2 * format with pep8 * fix bug in template dir resolution * update test case to address multiline event * fix a issue that when setup eventgen with 200+ indexers, any exceptions will terminate setup and re-writing default configure files * Fix bug #179 urlparams is not set (#181) * fix issue-183 * add modinput ft (#185) * Issue 159 (#186) * Fixed timer and token * Added a conditional for end=-1 * Added timeMultiple logic * Time Multiple Fix * Add default pull request reviewers (#190) * Default to -1 (#189) * Changed verbose -> verbosity (#191) * Update README.md (#195) Like other Splunk products - Splunk Enterprise Security, Splunk Business Workflow ... - Splunk Event Generator does not need a definitive article "The" before the product name. * update doc for friendly reading and add backward capability section. (#193) * Update index.md (#194) Update index.md * change the sampleDir setting in test cases (#196) * return status=2 when all tasks finished. (#182) * return status=2 when all tasks finished. * Change release verion to 6.3.6 (#200) * Change release verion to 6.3.6
* Fix jinja template bug under SA-Eventgen app * Feature timeMultiple (#141) * Adjusting interval with timeMultiple * Update issue templates add the bug report and feature request issue templates * changing the stanzas to produce data * Windbag generator/count + end=0 edge cases (#145) * Generator handling for count = -1, end = 0 working properly * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * [Docs] update contribute docs (#148) * [Docs] update contribute docs * [Docs] update the contribute * Fix make docs bug and summary anchor link error * init unittest * [Build] add ut for timeparser functions * Add more UT for config module * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * Update docs * Post-PEP8 Fixes (#157) * skip sort, gitignore 3rd party libs * fixed yapf ignore, ran format across repo * Issue 160 (#163) * Fixed timer and token * Added a conditional for end=-1 * Update eventgentimer.py * Fixed timer and token (#162) * add extendIndexes feature (#154) * add extendIndexes feature * set extendIndexes as a list value * correct log level * upate doc, change num to weight * Test fix (#168) * Add sample functional test for replay mode * Add token replacement functional tests * skip failed case * Added a timeout * created a results dir * Update version.json * Fix previous pep8 format regression bug (#171) * Fix merge conflict bug * Delete tool orca related part (#178) * add test for jinja template test (#177) * clean up the logic about sampleDir and jinja_template_dir setting Add functional test for jinja template generator Fixes #174 Fixes #167 * revert the change about token, sample mode test cases * merge the change from develop branch * merge test conf from develop branch * use urllib 1.24.2 * format with pep8 * fix bug in template dir resolution * update test case to address multiline event * fix a issue that when setup eventgen with 200+ indexers, any exceptions will terminate setup and re-writing default configure files * Fix bug #179 urlparams is not set (#181) * fix issue-183 * add modinput ft (#185) * Issue 159 (#186) * Fixed timer and token * Added a conditional for end=-1 * Added timeMultiple logic * Time Multiple Fix * Add default pull request reviewers (#190) * Default to -1 (#189) * Changed verbose -> verbosity (#191) * Update README.md (#195) Like other Splunk products - Splunk Enterprise Security, Splunk Business Workflow ... - Splunk Event Generator does not need a definitive article "The" before the product name. * update doc for friendly reading and add backward capability section. (#193) * Update index.md (#194) Update index.md * change the sampleDir setting in test cases (#196) * return status=2 when all tasks finished. (#182) * return status=2 when all tasks finished. * Change release verion to 6.3.6 (#200) * Change release verion to 6.3.6 * Fix flaky tests (#204) * Fix flaky tests * Rename modinput to mod_input to avoid functional test fail
* Fix jinja template bug under SA-Eventgen app * Feature timeMultiple (#141) * Adjusting interval with timeMultiple * Update issue templates add the bug report and feature request issue templates * changing the stanzas to produce data * Windbag generator/count + end=0 edge cases (#145) * Generator handling for count = -1, end = 0 working properly * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * [Docs] update contribute docs (#148) * [Docs] update contribute docs * [Docs] update the contribute * Fix make docs bug and summary anchor link error * init unittest * [Build] add ut for timeparser functions * Add more UT for config module * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * Update docs * Post-PEP8 Fixes (#157) * skip sort, gitignore 3rd party libs * fixed yapf ignore, ran format across repo * Issue 160 (#163) * Fixed timer and token * Added a conditional for end=-1 * Update eventgentimer.py * Fixed timer and token (#162) * add extendIndexes feature (#154) * add extendIndexes feature * set extendIndexes as a list value * correct log level * upate doc, change num to weight * Test fix (#168) * Add sample functional test for replay mode * Add token replacement functional tests * skip failed case * Added a timeout * created a results dir * Update version.json * Fix previous pep8 format regression bug (#171) * Fix merge conflict bug * Delete tool orca related part (#178) * add test for jinja template test (#177) * clean up the logic about sampleDir and jinja_template_dir setting Add functional test for jinja template generator Fixes #174 Fixes #167 * revert the change about token, sample mode test cases * merge the change from develop branch * merge test conf from develop branch * use urllib 1.24.2 * format with pep8 * fix bug in template dir resolution * update test case to address multiline event * fix a issue that when setup eventgen with 200+ indexers, any exceptions will terminate setup and re-writing default configure files * Fix bug #179 urlparams is not set (#181) * fix issue-183 * add modinput ft (#185) * Issue 159 (#186) * Fixed timer and token * Added a conditional for end=-1 * Added timeMultiple logic * Time Multiple Fix * Add default pull request reviewers (#190) * Default to -1 (#189) * Changed verbose -> verbosity (#191) * Update README.md (#195) Like other Splunk products - Splunk Enterprise Security, Splunk Business Workflow ... - Splunk Event Generator does not need a definitive article "The" before the product name. * update doc for friendly reading and add backward capability section. (#193) * Update index.md (#194) Update index.md * change the sampleDir setting in test cases (#196) * return status=2 when all tasks finished. (#182) * return status=2 when all tasks finished. * Change release verion to 6.3.6 (#200) * Change release verion to 6.3.6 * Fix flaky tests (#204) * Fix flaky tests * Rename modinput to mod_input to avoid functional test fail * when hit an exception, make sure egx logs it to files * Fix circleci status badges (#208) * Clean up and interval error (#211) * Fix generatorWorks not work issue (#207) * Fix navigation error with installed with splunk stream (#214) * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * Add 3rd lib in app (#210) * Add 3rd lib in app * Bugfix/197 multiprocess not working (#218) * Fix issue 197 multiprocess not working * fix issue 219 (#220) * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * Add license credits (#222) * Feature/multi indexes (#224) * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * add extendIndexes feature * set extendIndexes as a list value * upate doc, change num to weight * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * add python code style lint and format * Add more unit tests for config module * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * fix no len dict out of range * clean duplicate code * Revert "Metrics output plugin" (#226) * [issue 217]disable logging queue in multiprocess mode (#223) * disable logging queue in multiprocess mode * Fixed fileName (#229) * Issue 201 (#221) * Removing unavailable servers * Removed nonresponding httpserver * Added a counter * fixed a bug * Added docs and spec * Addressing unused var * fixing url reference * fixed currentreadsize * Httpevent str formatting * fix #166 (#192)
* Fix jinja template bug under SA-Eventgen app * Feature timeMultiple (#141) * Adjusting interval with timeMultiple * Update issue templates add the bug report and feature request issue templates * changing the stanzas to produce data * Windbag generator/count + end=0 edge cases (#145) * Generator handling for count = -1, end = 0 working properly * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * [Docs] update contribute docs (#148) * [Docs] update contribute docs * [Docs] update the contribute * Fix make docs bug and summary anchor link error * init unittest * [Build] add ut for timeparser functions * Add more UT for config module * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * Update docs * Post-PEP8 Fixes (#157) * skip sort, gitignore 3rd party libs * fixed yapf ignore, ran format across repo * Issue 160 (#163) * Fixed timer and token * Added a conditional for end=-1 * Update eventgentimer.py * Fixed timer and token (#162) * add extendIndexes feature (#154) * add extendIndexes feature * set extendIndexes as a list value * correct log level * upate doc, change num to weight * Test fix (#168) * Add sample functional test for replay mode * Add token replacement functional tests * skip failed case * Added a timeout * created a results dir * Update version.json * Fix previous pep8 format regression bug (#171) * Fix merge conflict bug * Delete tool orca related part (#178) * add test for jinja template test (#177) * clean up the logic about sampleDir and jinja_template_dir setting Add functional test for jinja template generator Fixes #174 Fixes #167 * revert the change about token, sample mode test cases * merge the change from develop branch * merge test conf from develop branch * use urllib 1.24.2 * format with pep8 * fix bug in template dir resolution * update test case to address multiline event * fix a issue that when setup eventgen with 200+ indexers, any exceptions will terminate setup and re-writing default configure files * Fix bug #179 urlparams is not set (#181) * fix issue-183 * add modinput ft (#185) * Issue 159 (#186) * Fixed timer and token * Added a conditional for end=-1 * Added timeMultiple logic * Time Multiple Fix * Add default pull request reviewers (#190) * Default to -1 (#189) * Changed verbose -> verbosity (#191) * Update README.md (#195) Like other Splunk products - Splunk Enterprise Security, Splunk Business Workflow ... - Splunk Event Generator does not need a definitive article "The" before the product name. * update doc for friendly reading and add backward capability section. (#193) * Update index.md (#194) Update index.md * change the sampleDir setting in test cases (#196) * return status=2 when all tasks finished. (#182) * return status=2 when all tasks finished. * Change release verion to 6.3.6 (#200) * Change release verion to 6.3.6 * Fix flaky tests (#204) * Fix flaky tests * Rename modinput to mod_input to avoid functional test fail * when hit an exception, make sure egx logs it to files * Fix circleci status badges (#208) * Clean up and interval error (#211) * Fix generatorWorks not work issue (#207) * Fix navigation error with installed with splunk stream (#214) * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * Add 3rd lib in app (#210) * Add 3rd lib in app * Bugfix/197 multiprocess not working (#218) * Fix issue 197 multiprocess not working * fix issue 219 (#220) * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * Add license credits (#222) * Feature/multi indexes (#224) * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * add extendIndexes feature * set extendIndexes as a list value * upate doc, change num to weight * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * add python code style lint and format * Add more unit tests for config module * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * fix no len dict out of range * clean duplicate code * Revert "Metrics output plugin" (#226) * [issue 217]disable logging queue in multiprocess mode (#223) * disable logging queue in multiprocess mode * Fixed fileName (#229) * Issue 201 (#221) * Removing unavailable servers * Removed nonresponding httpserver * Added a counter * fixed a bug * Added docs and spec * Addressing unused var * fixing url reference * fixed currentreadsize * Httpevent str formatting * fix #166 (#192) * Change release version to 6.4.0 and add release notes (#232)
* Fix jinja template bug under SA-Eventgen app * Feature timeMultiple (#141) * Adjusting interval with timeMultiple * Update issue templates add the bug report and feature request issue templates * changing the stanzas to produce data * Windbag generator/count + end=0 edge cases (#145) * Generator handling for count = -1, end = 0 working properly * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * [Docs] update contribute docs (#148) * [Docs] update contribute docs * [Docs] update the contribute * Fix make docs bug and summary anchor link error * init unittest * [Build] add ut for timeparser functions * Add more UT for config module * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * Update docs * Post-PEP8 Fixes (#157) * skip sort, gitignore 3rd party libs * fixed yapf ignore, ran format across repo * Issue 160 (#163) * Fixed timer and token * Added a conditional for end=-1 * Update eventgentimer.py * Fixed timer and token (#162) * add extendIndexes feature (#154) * add extendIndexes feature * set extendIndexes as a list value * correct log level * upate doc, change num to weight * Test fix (#168) * Add sample functional test for replay mode * Add token replacement functional tests * skip failed case * Added a timeout * created a results dir * Update version.json * Fix previous pep8 format regression bug (#171) * Fix merge conflict bug * Delete tool orca related part (#178) * add test for jinja template test (#177) * clean up the logic about sampleDir and jinja_template_dir setting Add functional test for jinja template generator Fixes #174 Fixes #167 * revert the change about token, sample mode test cases * merge the change from develop branch * merge test conf from develop branch * use urllib 1.24.2 * format with pep8 * fix bug in template dir resolution * update test case to address multiline event * fix a issue that when setup eventgen with 200+ indexers, any exceptions will terminate setup and re-writing default configure files * Fix bug #179 urlparams is not set (#181) * fix issue-183 * add modinput ft (#185) * Issue 159 (#186) * Fixed timer and token * Added a conditional for end=-1 * Added timeMultiple logic * Time Multiple Fix * Add default pull request reviewers (#190) * Default to -1 (#189) * Changed verbose -> verbosity (#191) * Update README.md (#195) Like other Splunk products - Splunk Enterprise Security, Splunk Business Workflow ... - Splunk Event Generator does not need a definitive article "The" before the product name. * update doc for friendly reading and add backward capability section. (#193) * Update index.md (#194) Update index.md * change the sampleDir setting in test cases (#196) * return status=2 when all tasks finished. (#182) * return status=2 when all tasks finished. * Change release verion to 6.3.6 (#200) * Change release verion to 6.3.6 * Fix flaky tests (#204) * Fix flaky tests * Rename modinput to mod_input to avoid functional test fail * when hit an exception, make sure egx logs it to files * Fix circleci status badges (#208) * Clean up and interval error (#211) * Fix generatorWorks not work issue (#207) * Fix navigation error with installed with splunk stream (#214) * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * Add 3rd lib in app (#210) * Add 3rd lib in app * Bugfix/197 multiprocess not working (#218) * Fix issue 197 multiprocess not working * fix issue 219 (#220) * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * add metric_httpevent plugin * update log content in metric_httpevent * add doc for metric_httpevent * define httpevent_core and add fix eventgen-httpeventout log handler * restore samples file * restore unit test file * Add license credits (#222) * Feature/multi indexes (#224) * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * Bump version * add python code style lint and format * Add more unit tests for config module * Pep8 (#151) * Format to code standards, addressed linter errors/warnings * add extendIndexes feature * set extendIndexes as a list value * upate doc, change num to weight * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * Fix jinja template bug under SA-Eventgen app * Update docs (#146) * Updated docs, added release notes to changelog * add python code style lint and format * Add more unit tests for config module * calculate generate rate and use sequential index replacement * update dockerfile * randomize index replacement in each batch * fix no len dict out of range * clean duplicate code * Revert "Metrics output plugin" (#226) * [issue 217]disable logging queue in multiprocess mode (#223) * disable logging queue in multiprocess mode * Fixed fileName (#229) * Issue 201 (#221) * Removing unavailable servers * Removed nonresponding httpserver * Added a counter * fixed a bug * Added docs and spec * Addressing unused var * fixing url reference * fixed currentreadsize * Httpevent str formatting * fix #166 (#192) * Change release version to 6.4.0 and add release notes (#232) * fix modinput init error (#234)