Added compression text fixture.

pull/2135/head
David Garcia Quintas 10 years ago
parent 92ce588559
commit dd2ebee848
  1. 1342
      Makefile
  2. 2
      src/core/channel/channel_args.h
  3. 3
      src/core/channel/compress_filter.c
  4. 129
      test/core/end2end/fixtures/chttp2_fullstack_compression.c
  5. 1
      test/core/end2end/gen_build_json.py
  6. 1
      test/core/end2end/tests/invoke_large_request.c
  7. 549
      tools/run_tests/tests.json
  8. 435
      vsprojects/Grpc.mak

1342
Makefile

File diff suppressed because one or more lines are too long

@ -56,7 +56,7 @@ int grpc_channel_args_is_census_enabled(const grpc_channel_args *a);
grpc_compression_level grpc_channel_args_get_compression_level(
const grpc_channel_args *a);
/** Returns an channel arg instance with compression enabled. If \a a is
/** Returns a channel arg instance with compression enabled. If \a a is
* non-NULL, its args are copied. N.B. GRPC_COMPRESS_LEVEL_NONE disables
* compression for the channel. */
grpc_channel_args *grpc_channel_args_set_compression_level(

@ -177,7 +177,8 @@ static void process_send_ops(grpc_call_element *elem,
grpc_metadata_batch_add_head(
&(sop->data.metadata), &calld->compression_algorithm_storage,
grpc_mdelem_ref(channeld->mdelem_compression_algorithms
[calld->compression_algorithm]));
[did_compress ? calld->compression_algorithm
: GRPC_COMPRESS_NONE]));
break;
case GRPC_OP_SLICE:
if (did_compress) {

@ -0,0 +1,129 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "test/core/end2end/end2end_tests.h"
#include <string.h>
#include "src/core/channel/channel_args.h"
#include "src/core/channel/client_channel.h"
#include "src/core/channel/connected_channel.h"
#include "src/core/channel/http_server_filter.h"
#include "src/core/surface/channel.h"
#include "src/core/surface/client.h"
#include "src/core/surface/server.h"
#include "src/core/transport/chttp2_transport.h"
#include <grpc/support/alloc.h>
#include <grpc/support/host_port.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/thd.h>
#include <grpc/support/useful.h>
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
typedef struct fullstack_compression_fixture_data {
char *localaddr;
grpc_channel_args* client_args_compression;
grpc_channel_args* server_args_compression;
} fullstack_compression_fixture_data;
static grpc_end2end_test_fixture chttp2_create_fixture_fullstack_compression(
grpc_channel_args *client_args, grpc_channel_args *server_args) {
grpc_end2end_test_fixture f;
int port = grpc_pick_unused_port_or_die();
fullstack_compression_fixture_data *ffd =
gpr_malloc(sizeof(fullstack_compression_fixture_data));
memset(&f, 0, sizeof(f));
gpr_join_host_port(&ffd->localaddr, "localhost", port);
f.fixture_data = ffd;
f.cq = grpc_completion_queue_create();
return f;
}
void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture *f,
grpc_channel_args *client_args) {
fullstack_compression_fixture_data *ffd = f->fixture_data;
ffd->client_args_compression = grpc_channel_args_set_compression_level(
client_args, GRPC_COMPRESS_LEVEL_HIGH);
f->client = grpc_channel_create(ffd->localaddr, ffd->client_args_compression);
}
void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture *f,
grpc_channel_args *server_args) {
fullstack_compression_fixture_data *ffd = f->fixture_data;
ffd->server_args_compression = grpc_channel_args_set_compression_level(
server_args, GRPC_COMPRESS_LEVEL_HIGH);
if (f->server) {
grpc_server_destroy(f->server);
}
f->server = grpc_server_create(ffd->server_args_compression);
grpc_server_register_completion_queue(f->server, f->cq);
GPR_ASSERT(grpc_server_add_http2_port(f->server, ffd->localaddr));
grpc_server_start(f->server);
}
void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture *f) {
fullstack_compression_fixture_data *ffd = f->fixture_data;
grpc_channel_args_destroy(ffd->client_args_compression);
grpc_channel_args_destroy(ffd->server_args_compression);
gpr_free(ffd->localaddr);
gpr_free(ffd);
}
/* All test configurations */
static grpc_end2end_test_config configs[] = {
{"chttp2/fullstack_compression", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
chttp2_create_fixture_fullstack_compression,
chttp2_init_client_fullstack_compression,
chttp2_init_server_fullstack_compression,
chttp2_tear_down_fullstack_compression},
};
int main(int argc, char **argv) {
size_t i;
grpc_test_init(argc, argv);
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
}
grpc_shutdown();
return 0;
}

@ -44,6 +44,7 @@ default_secure_fixture_options = FixtureOptions(True, ['windows', 'posix'])
END2END_FIXTURES = {
'chttp2_fake_security': default_secure_fixture_options,
'chttp2_fullstack': default_unsecure_fixture_options,
'chttp2_fullstack_compression': default_unsecure_fixture_options,
'chttp2_fullstack_with_poll': FixtureOptions(False, ['posix']),
'chttp2_fullstack_uds_posix': FixtureOptions(False, ['posix']),
'chttp2_simple_ssl_fullstack': default_secure_fixture_options,

@ -228,7 +228,6 @@ static void test_invoke_large_request(grpc_end2end_test_config config) {
grpc_byte_buffer_destroy(response_payload);
grpc_byte_buffer_destroy(request_payload_recv);
grpc_byte_buffer_destroy(response_payload_recv);
gpr_slice_unref(request_payload_slice);
gpr_slice_unref(response_payload_slice);
end_test(&f);

@ -1297,6 +1297,285 @@
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_bad_hostname_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_invoke_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_before_invoke_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_in_a_vacuum_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_census_simple_request_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_disappearing_server_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_empty_batch_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_graceful_server_shutdown_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_invoke_large_request_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_concurrent_streams_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_message_length_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_no_op_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_ping_pong_streaming_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_registered_call_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_and_call_creds_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_compressed_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_flags_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_large_metadata_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_payload_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_server_finishes_request_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_delayed_request_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
@ -3706,6 +3985,276 @@
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_bad_hostname_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_accept_and_writes_closed_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_after_invoke_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_before_invoke_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_cancel_in_a_vacuum_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_census_simple_request_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_disappearing_server_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_inflight_calls_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_early_server_shutdown_finishes_tags_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_empty_batch_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_graceful_server_shutdown_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": true,
"language": "c",
"name": "chttp2_fullstack_compression_invoke_large_request_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_concurrent_streams_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_max_message_length_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_no_op_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_ping_pong_streaming_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_registered_call_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_binary_metadata_and_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_metadata_and_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_response_with_trailing_metadata_and_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_compressed_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_flags_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_large_metadata_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_request_with_payload_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_server_finishes_request_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_delayed_request_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",
"name": "chttp2_fullstack_compression_simple_request_with_high_initial_sequence_number_unsecure_test",
"platforms": [
"windows",
"posix"
]
},
{
"flaky": false,
"language": "c",

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save