mirror of https://github.com/grpc/grpc.git
pull/5726/head
commit
01dcc49449
67 changed files with 18778 additions and 338 deletions
@ -0,0 +1,301 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2016, 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 <grpc/grpc.h> |
||||
#include <grpc/support/alloc.h> |
||||
#include <grpc/support/log.h> |
||||
#include <grpc/support/string_util.h> |
||||
#include <string.h> |
||||
#include "src/core/lib/iomgr/resolve_address.h" |
||||
#include "src/core/lib/iomgr/sockaddr.h" |
||||
#include "test/core/end2end/cq_verifier.h" |
||||
#include "test/core/util/port.h" |
||||
#include "test/core/util/test_config.h" |
||||
|
||||
static void *tag(intptr_t i) { return (void *)i; } |
||||
|
||||
static gpr_mu g_mu; |
||||
static int g_resolve_port = -1; |
||||
static grpc_resolved_addresses *(*iomgr_resolve_address)( |
||||
const char *name, const char *default_port); |
||||
|
||||
static void set_resolve_port(int port) { |
||||
gpr_mu_lock(&g_mu); |
||||
g_resolve_port = port; |
||||
gpr_mu_unlock(&g_mu); |
||||
} |
||||
|
||||
static grpc_resolved_addresses *my_resolve_address(const char *name, |
||||
const char *addr) { |
||||
if (0 != strcmp(name, "test")) { |
||||
return iomgr_resolve_address(name, addr); |
||||
} |
||||
|
||||
gpr_mu_lock(&g_mu); |
||||
if (g_resolve_port < 0) { |
||||
gpr_mu_unlock(&g_mu); |
||||
return NULL; |
||||
} else { |
||||
grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs)); |
||||
addrs->naddrs = 1; |
||||
addrs->addrs = gpr_malloc(sizeof(*addrs->addrs)); |
||||
memset(addrs->addrs, 0, sizeof(*addrs->addrs)); |
||||
struct sockaddr_in *sa = (struct sockaddr_in *)addrs->addrs[0].addr; |
||||
sa->sin_family = AF_INET; |
||||
sa->sin_addr.s_addr = htonl(0x7f000001); |
||||
sa->sin_port = htons((uint16_t)g_resolve_port); |
||||
addrs->addrs[0].len = sizeof(*sa); |
||||
gpr_mu_unlock(&g_mu); |
||||
return addrs; |
||||
} |
||||
} |
||||
|
||||
int main(int argc, char **argv) { |
||||
grpc_completion_queue *cq; |
||||
cq_verifier *cqv; |
||||
grpc_op ops[6]; |
||||
grpc_op *op; |
||||
|
||||
grpc_test_init(argc, argv); |
||||
|
||||
gpr_mu_init(&g_mu); |
||||
iomgr_resolve_address = grpc_blocking_resolve_address; |
||||
grpc_blocking_resolve_address = my_resolve_address; |
||||
grpc_init(); |
||||
|
||||
int was_cancelled1; |
||||
int was_cancelled2; |
||||
|
||||
grpc_metadata_array trailing_metadata_recv1; |
||||
grpc_metadata_array request_metadata1; |
||||
grpc_call_details request_details1; |
||||
grpc_status_code status1; |
||||
char *details1 = NULL; |
||||
size_t details_capacity1 = 0; |
||||
grpc_metadata_array_init(&trailing_metadata_recv1); |
||||
grpc_metadata_array_init(&request_metadata1); |
||||
grpc_call_details_init(&request_details1); |
||||
|
||||
grpc_metadata_array trailing_metadata_recv2; |
||||
grpc_metadata_array request_metadata2; |
||||
grpc_call_details request_details2; |
||||
grpc_status_code status2; |
||||
char *details2 = NULL; |
||||
size_t details_capacity2 = 0; |
||||
grpc_metadata_array_init(&trailing_metadata_recv2); |
||||
grpc_metadata_array_init(&request_metadata2); |
||||
grpc_call_details_init(&request_details2); |
||||
|
||||
cq = grpc_completion_queue_create(NULL); |
||||
cqv = cq_verifier_create(cq); |
||||
|
||||
/* reserve two ports */ |
||||
int port1 = grpc_pick_unused_port_or_die(); |
||||
int port2 = grpc_pick_unused_port_or_die(); |
||||
|
||||
char *addr; |
||||
|
||||
/* create a channel that picks first amongst the servers */ |
||||
grpc_channel *chan = grpc_insecure_channel_create("test", NULL, NULL); |
||||
/* and an initial call to them */ |
||||
grpc_call *call1 = grpc_channel_create_call( |
||||
chan, NULL, GRPC_PROPAGATE_DEFAULTS, cq, "/foo", "127.0.0.1", |
||||
GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20), NULL); |
||||
/* send initial metadata to probe connectivity */ |
||||
op = ops; |
||||
op->op = GRPC_OP_SEND_INITIAL_METADATA; |
||||
op->data.send_initial_metadata.count = 0; |
||||
op->flags = 0; |
||||
op->reserved = NULL; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(call1, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x101), NULL)); |
||||
/* and receive status to probe termination */ |
||||
op = ops; |
||||
op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; |
||||
op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv1; |
||||
op->data.recv_status_on_client.status = &status1; |
||||
op->data.recv_status_on_client.status_details = &details1; |
||||
op->data.recv_status_on_client.status_details_capacity = &details_capacity1; |
||||
op->flags = 0; |
||||
op->reserved = NULL; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(call1, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x102), NULL)); |
||||
|
||||
/* bring a server up on the first port */ |
||||
grpc_server *server1 = grpc_server_create(NULL, NULL); |
||||
gpr_asprintf(&addr, "127.0.0.1:%d", port1); |
||||
grpc_server_add_insecure_http2_port(server1, addr); |
||||
grpc_server_register_completion_queue(server1, cq, NULL); |
||||
gpr_free(addr); |
||||
grpc_server_start(server1); |
||||
|
||||
/* request a call to the server */ |
||||
grpc_call *server_call1; |
||||
GPR_ASSERT(GRPC_CALL_OK == |
||||
grpc_server_request_call(server1, &server_call1, &request_details1, |
||||
&request_metadata1, cq, cq, tag(0x301))); |
||||
|
||||
set_resolve_port(port1); |
||||
|
||||
/* first call should now start */ |
||||
cq_expect_completion(cqv, tag(0x101), 1); |
||||
cq_expect_completion(cqv, tag(0x301), 1); |
||||
cq_verify(cqv); |
||||
|
||||
GPR_ASSERT(GRPC_CHANNEL_READY == |
||||
grpc_channel_check_connectivity_state(chan, 0)); |
||||
grpc_channel_watch_connectivity_state(chan, GRPC_CHANNEL_READY, |
||||
gpr_inf_future(GPR_CLOCK_REALTIME), cq, |
||||
tag(0x9999)); |
||||
|
||||
/* listen for close on the server call to probe for finishing */ |
||||
op = ops; |
||||
op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; |
||||
op->data.recv_close_on_server.cancelled = &was_cancelled1; |
||||
op->flags = 0; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(server_call1, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x302), NULL)); |
||||
|
||||
/* shutdown first server:
|
||||
* we should see a connectivity change and then nothing */ |
||||
set_resolve_port(-1); |
||||
grpc_server_shutdown_and_notify(server1, cq, tag(0xdead1)); |
||||
cq_expect_completion(cqv, tag(0x9999), 1); |
||||
cq_verify(cqv); |
||||
cq_verify_empty(cqv); |
||||
|
||||
/* and a new call: should go through to server2 when we start it */ |
||||
grpc_call *call2 = grpc_channel_create_call( |
||||
chan, NULL, GRPC_PROPAGATE_DEFAULTS, cq, "/foo", "127.0.0.1", |
||||
GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20), NULL); |
||||
/* send initial metadata to probe connectivity */ |
||||
op = ops; |
||||
op->op = GRPC_OP_SEND_INITIAL_METADATA; |
||||
op->data.send_initial_metadata.count = 0; |
||||
op->flags = 0; |
||||
op->reserved = NULL; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(call2, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x201), NULL)); |
||||
/* and receive status to probe termination */ |
||||
op = ops; |
||||
op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; |
||||
op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv2; |
||||
op->data.recv_status_on_client.status = &status2; |
||||
op->data.recv_status_on_client.status_details = &details2; |
||||
op->data.recv_status_on_client.status_details_capacity = &details_capacity2; |
||||
op->flags = 0; |
||||
op->reserved = NULL; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(call2, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x202), NULL)); |
||||
|
||||
/* and bring up second server */ |
||||
set_resolve_port(port2); |
||||
grpc_server *server2 = grpc_server_create(NULL, NULL); |
||||
gpr_asprintf(&addr, "127.0.0.1:%d", port2); |
||||
grpc_server_add_insecure_http2_port(server2, addr); |
||||
grpc_server_register_completion_queue(server2, cq, NULL); |
||||
gpr_free(addr); |
||||
grpc_server_start(server2); |
||||
|
||||
/* request a call to the server */ |
||||
grpc_call *server_call2; |
||||
GPR_ASSERT(GRPC_CALL_OK == |
||||
grpc_server_request_call(server2, &server_call2, &request_details2, |
||||
&request_metadata2, cq, cq, tag(0x401))); |
||||
|
||||
/* second call should now start */ |
||||
cq_expect_completion(cqv, tag(0x201), 1); |
||||
cq_expect_completion(cqv, tag(0x401), 1); |
||||
cq_verify(cqv); |
||||
|
||||
/* listen for close on the server call to probe for finishing */ |
||||
op = ops; |
||||
op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; |
||||
op->data.recv_close_on_server.cancelled = &was_cancelled2; |
||||
op->flags = 0; |
||||
op++; |
||||
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(server_call2, ops, |
||||
(size_t)(op - ops), |
||||
tag(0x402), NULL)); |
||||
|
||||
/* shutdown second server: we should see nothing */ |
||||
grpc_server_shutdown_and_notify(server2, cq, tag(0xdead2)); |
||||
cq_verify_empty(cqv); |
||||
|
||||
grpc_call_cancel(call1, NULL); |
||||
grpc_call_cancel(call2, NULL); |
||||
|
||||
/* now everything else should finish */ |
||||
cq_expect_completion(cqv, tag(0x102), 1); |
||||
cq_expect_completion(cqv, tag(0x202), 1); |
||||
cq_expect_completion(cqv, tag(0x302), 1); |
||||
cq_expect_completion(cqv, tag(0x402), 1); |
||||
cq_expect_completion(cqv, tag(0xdead1), 1); |
||||
cq_expect_completion(cqv, tag(0xdead2), 1); |
||||
cq_verify(cqv); |
||||
|
||||
grpc_call_destroy(call1); |
||||
grpc_call_destroy(call2); |
||||
grpc_call_destroy(server_call1); |
||||
grpc_call_destroy(server_call2); |
||||
grpc_server_destroy(server1); |
||||
grpc_server_destroy(server2); |
||||
grpc_channel_destroy(chan); |
||||
|
||||
grpc_metadata_array_destroy(&trailing_metadata_recv1); |
||||
grpc_metadata_array_destroy(&request_metadata1); |
||||
grpc_call_details_destroy(&request_details1); |
||||
gpr_free(details1); |
||||
grpc_metadata_array_destroy(&trailing_metadata_recv2); |
||||
grpc_metadata_array_destroy(&request_metadata2); |
||||
grpc_call_details_destroy(&request_details2); |
||||
gpr_free(details2); |
||||
|
||||
cq_verifier_destroy(cqv); |
||||
grpc_completion_queue_destroy(cq); |
||||
|
||||
grpc_shutdown(); |
||||
gpr_mu_destroy(&g_mu); |
||||
|
||||
return 0; |
||||
} |
@ -0,0 +1 @@ |
||||
{"":21} |
@ -0,0 +1 @@ |
||||
{"":21] |
@ -0,0 +1,46 @@ |
||||
/*
|
||||
* |
||||
* Copyright 2016, 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 <grpc/support/log.h> |
||||
#include "src/core/lib/support/load_file.h" |
||||
|
||||
extern int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); |
||||
|
||||
int main(int argc, char **argv) { |
||||
int ok = 0; |
||||
gpr_slice buffer = gpr_load_file(argv[1], 0, &ok); |
||||
GPR_ASSERT(ok); |
||||
LLVMFuzzerTestOneInput(GPR_SLICE_START_PTR(buffer), GPR_SLICE_LENGTH(buffer)); |
||||
gpr_slice_unref(buffer); |
||||
return 0; |
||||
} |
@ -0,0 +1,57 @@ |
||||
# Copyright 2016, 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. |
||||
|
||||
"""Create tests for each fuzzer""" |
||||
|
||||
import copy |
||||
import glob |
||||
|
||||
def mako_plugin(dictionary): |
||||
targets = dictionary['targets'] |
||||
tests = dictionary['tests'] |
||||
for tgt in targets: |
||||
if tgt['build'] == 'fuzzer': |
||||
new_target = copy.deepcopy(tgt) |
||||
new_target['build'] = 'test' |
||||
new_target['name'] += '_one_entry' |
||||
new_target['run'] = False |
||||
new_target['deps'].insert(0, 'one_input_fuzzer') |
||||
targets.append(new_target) |
||||
for corpus in new_target['corpus_dirs']: |
||||
for fn in sorted(glob.glob('%s/*' % corpus)): |
||||
tests.append({ |
||||
'name': new_target['name'], |
||||
'args': [fn], |
||||
'exclude_configs': [], |
||||
'platforms': ['linux', 'mac', 'windows', 'posix'], |
||||
'ci_platforms': ['linux', 'mac', 'windows', 'posix'], |
||||
'flaky': False, |
||||
'language': 'c', |
||||
'cpu_cost': 0.1, |
||||
}) |
@ -0,0 +1,38 @@ |
||||
#!/bin/bash |
||||
# Copyright 2015-2016, 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. |
||||
|
||||
set -ex |
||||
|
||||
cd $(dirname $0)/../../.. |
||||
|
||||
# needed to correctly locate testca |
||||
cd src/csharp/Grpc.IntegrationTesting.QpsWorker/bin/Release |
||||
|
||||
mono Grpc.IntegrationTesting.QpsWorker.exe $@ |
@ -0,0 +1,38 @@ |
||||
#!/bin/bash |
||||
# Copyright 2015-2016, 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. |
||||
|
||||
source ~/.nvm/nvm.sh |
||||
nvm use 0.12 |
||||
|
||||
set -ex |
||||
|
||||
cd $(dirname $0)/../../.. |
||||
|
||||
node src/node/performance/worker.js $@ |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,167 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<ItemGroup Label="ProjectConfigurations"> |
||||
<ProjectConfiguration Include="Debug|Win32"> |
||||
<Configuration>Debug</Configuration> |
||||
<Platform>Win32</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Debug|x64"> |
||||
<Configuration>Debug</Configuration> |
||||
<Platform>x64</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Release|Win32"> |
||||
<Configuration>Release</Configuration> |
||||
<Platform>Win32</Platform> |
||||
</ProjectConfiguration> |
||||
<ProjectConfiguration Include="Release|x64"> |
||||
<Configuration>Release</Configuration> |
||||
<Platform>x64</Platform> |
||||
</ProjectConfiguration> |
||||
</ItemGroup> |
||||
<PropertyGroup Label="Globals"> |
||||
<ProjectGuid>{3589BCA3-CB0E-58FE-2F67-C4475D5CA517}</ProjectGuid> |
||||
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected> |
||||
<IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir> |
||||
</PropertyGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
||||
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration"> |
||||
<PlatformToolset>v100</PlatformToolset> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration"> |
||||
<PlatformToolset>v110</PlatformToolset> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration"> |
||||
<PlatformToolset>v120</PlatformToolset> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration"> |
||||
<PlatformToolset>v140</PlatformToolset> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> |
||||
<ConfigurationType>StaticLibrary</ConfigurationType> |
||||
<UseDebugLibraries>true</UseDebugLibraries> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration"> |
||||
<ConfigurationType>StaticLibrary</ConfigurationType> |
||||
<UseDebugLibraries>false</UseDebugLibraries> |
||||
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
<CharacterSet>Unicode</CharacterSet> |
||||
</PropertyGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
||||
<ImportGroup Label="ExtensionSettings"> |
||||
</ImportGroup> |
||||
<ImportGroup Label="PropertySheets"> |
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
<Import Project="$(SolutionDir)\..\vsprojects\global.props" /> |
||||
<Import Project="$(SolutionDir)\..\vsprojects\winsock.props" /> |
||||
</ImportGroup> |
||||
<PropertyGroup Label="UserMacros" /> |
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'"> |
||||
<TargetName>one_input_fuzzer</TargetName> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'"> |
||||
<TargetName>one_input_fuzzer</TargetName> |
||||
</PropertyGroup> |
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
<ClCompile> |
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<Optimization>Disabled</Optimization> |
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
||||
<TreatWarningAsError>true</TreatWarningAsError> |
||||
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat> |
||||
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation> |
||||
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
<ClCompile> |
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<Optimization>Disabled</Optimization> |
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
||||
<TreatWarningAsError>true</TreatWarningAsError> |
||||
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat> |
||||
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation> |
||||
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
<ClCompile> |
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<Optimization>MaxSpeed</Optimization> |
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
||||
<TreatWarningAsError>true</TreatWarningAsError> |
||||
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat> |
||||
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation> |
||||
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation> |
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
<OptimizeReferences>true</OptimizeReferences> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
<ClCompile> |
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
<WarningLevel>Level3</WarningLevel> |
||||
<Optimization>MaxSpeed</Optimization> |
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
<SDLCheck>true</SDLCheck> |
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
||||
<TreatWarningAsError>true</TreatWarningAsError> |
||||
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat> |
||||
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild> |
||||
</ClCompile> |
||||
<Link> |
||||
<SubSystem>Windows</SubSystem> |
||||
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation> |
||||
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation> |
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
<OptimizeReferences>true</OptimizeReferences> |
||||
</Link> |
||||
</ItemDefinitionGroup> |
||||
|
||||
<ItemGroup> |
||||
<ClCompile Include="$(SolutionDir)\..\test\core\util\one_corpus_entry_fuzzer.c"> |
||||
</ClCompile> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj"> |
||||
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project> |
||||
</ProjectReference> |
||||
</ItemGroup> |
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
||||
<ImportGroup Label="ExtensionTargets"> |
||||
</ImportGroup> |
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> |
||||
<PropertyGroup> |
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> |
||||
</PropertyGroup> |
||||
</Target> |
||||
</Project> |
||||
|
@ -0,0 +1,21 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<ItemGroup> |
||||
<ClCompile Include="$(SolutionDir)\..\test\core\util\one_corpus_entry_fuzzer.c"> |
||||
<Filter>test\core\util</Filter> |
||||
</ClCompile> |
||||
</ItemGroup> |
||||
|
||||
<ItemGroup> |
||||
<Filter Include="test"> |
||||
<UniqueIdentifier>{178c17dc-766b-aa84-e928-d6bd0e456ff9}</UniqueIdentifier> |
||||
</Filter> |
||||
<Filter Include="test\core"> |
||||
<UniqueIdentifier>{f08c2f86-ff65-4ce8-1ae6-e40fae0cef67}</UniqueIdentifier> |
||||
</Filter> |
||||
<Filter Include="test\core\util"> |
||||
<UniqueIdentifier>{17c672ec-2cce-5636-14c8-4812cd2e1b9a}</UniqueIdentifier> |
||||
</Filter> |
||||
</ItemGroup> |
||||
</Project> |
||||
|
Loading…
Reference in new issue