[
https://issues.apache.org/jira/browse/TS-3782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14650467#comment-14650467
]
Thomas Jackson commented on TS-3782:
------------------------------------
I generally prefer reviewing code on github since I can comment there ;) but
I'll try and do it here in the comments:
h1. normal_scenario_tests_001.patch
{code}
+try:
+ import hyper
+except Exception as e:
+ helpers.unittest.SkipTest('Cannot import hyper, skipping tests for HTTP/2')
{code}
This will be ImportError, no need to catch all exceptions :)
{code}
+ # HTTP2 configs
+ cls.configs['records.config']['CONFIG']['proxy.config.http2.enabled']
= 1
+
cls.configs['records.config']['CONFIG']['proxy.config.http.server_ports'] += '
{0}:ssl'.format(cls.http2_port)
+
cls.configs['records.config']['CONFIG']['proxy.config.ssl.server.cert.path'] =
helpers.tests_file_path('rsa_keys')
+
+ cls.configs['records.config']['CONFIG'].update({
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http2.*|ssl.*'
+ })
{code}
Style thing-- you modify this dict two ways, I personally prefer the second--
but I'd just pick one for the test to be consistent :)
{code}
+ def hello(request):
+ return 'hello'
+
+ cls.http_endpoint.add_handler('/', hello)
{code}
If all you need is a basic endpoint I'd suggest using
[HTTPBinCase|https://github.com/apache/trafficserver-qa/blob/master/tsqa/test_cases.py#L159]
{code}
+ def __traffic_out(self):
+ '''
+ Cat traffic.out
+ '''
+ traffic_out_path = os.path.join(self.environment.layout.logdir,
'traffic.out')
+ traffic_out = open(traffic_out_path)
+ for line in traffic_out.read
{code}
I see that you use this to print out on a test failure, that *might* be a lot
of output so you might want to put that on the debug level-- and I might
actually make that the default for debug-- seems like a nice-ish way to avoid
going to the temp directory ;) Keep in mind though that some messages go to
diags.log as well.
h1. exceptional_scenario_tests_001.patch
{code}
# Run all tests.
-test: $(VIRTUALENV_DIR)
+test: $(VIRTUALENV_DIR) setup_h2spec
@. $(VIRTUALENV_DIR)/bin/activate && $(VIRTUALENV_DIR)/bin/nosetests
--with-xunit -sv --logging-level=INFO
{code}
I'm not sure if we want to put this up at the top like this-- my concern would
be that we'd require this h2spec to run *any* tests. Maybe this would be better
done similarly how you do your conditional import within the test? Opinions
[~zwoop]?
{code}
+ def test_http2_spec_section(self):
+ '''
+ Test HTTP/2 w/ h2spec (Exceptional Scenario)
+ '''
+ # TODO Use all test cases after ATS can pass them
+ # sections = ['3.5', '4.2', '4.3', '5.1', '5.3.1', '5.4.1', '5.5',
+ # '6.1', '6.2', '6.3', '6.4', '6.5', '6.5.2', '6.7', '6.8',
+ # '6.9', '6.9.1', '6.10', '8.1', '8.1.2', '8.1.2.2',
'8.1.2.3', '8.1.2.6', '8.2']
+ sections = ['3.5', '4.2', '4.3', '5.3.1',
+ '6.2', '6.3', '6.5.2', '6.7', '6.8',
+ '6.9', '8.1.2', '8.1.2.3', '8.2']
+
+ for section in sections:
+ self.assertEquals(0, self.__callH2Spec(section))
+ self.assertIn('All tests passed', self.stdout)
{code}
for the assertIn line you might want to set msg='Section X passed' otherwise if
this doesn't pass it'll be hard to know which section failed :)
In addition, You might want to run the other tests and mark them as expected
failures-- just so we know when we fix them.
Overall, looks good, few minor changes to be made then we can merge this.
Thanks for the tests!
> Add tests for HTTP/2 in TSQA
> ----------------------------
>
> Key: TS-3782
> URL: https://issues.apache.org/jira/browse/TS-3782
> Project: Traffic Server
> Issue Type: Test
> Components: CI, HTTP/2
> Reporter: Masaori Koshiba
> Assignee: Thomas Jackson
> Labels: review
> Fix For: 6.0.0
>
> Attachments: exceptional_scenario_tests_001.patch,
> normal_scenario_tests_001.patch
>
>
> Add tests for HTTP/2 in TSQA. IMO, it is better to add two types of tests for
> HTTP/2 below.
> 1. Normal Scenario Tests
> - Do HTTP requests with [hyper|https://github.com/lukasa/hyper] or other
> HTTP/2 client.
> 2. Exceptional Scenario Tests
> - [h2spec|https://github.com/summerwind/h2spec] looks good test tool for
> edge cases of HTTP/2.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)