aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile14
-rw-r--r--build.json12
-rw-r--r--include/grpc/support/port_platform.h3
-rw-r--r--templates/vsprojects/vs2013/gpr.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/gpr_cancellable_test.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/gpr_cmdline_test.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/gpr_log_test.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/grpc.sln.template58
-rw-r--r--templates/vsprojects/vs2013/grpc.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/grpc_test_util.vcxproj.template2
-rw-r--r--templates/vsprojects/vs2013/vcxproj_defs.include138
-rw-r--r--test/core/end2end/cq_verifier.c7
-rw-r--r--test/core/end2end/end2end_tests.c8
-rw-r--r--test/core/endpoint/endpoint_tests.c35
-rw-r--r--test/core/endpoint/endpoint_tests.h2
-rw-r--r--test/core/endpoint/secure_endpoint_test.c11
-rw-r--r--test/core/endpoint/tcp_test.c2
-rw-r--r--test/core/transport/transport_end2end_tests.c7
-rw-r--r--test/core/util/port_posix.c (renamed from test/core/util/port.c)5
-rw-r--r--vsprojects/README1
-rw-r--r--vsprojects/vs2013/gpr.vcxproj161
-rw-r--r--vsprojects/vs2013/gpr_cancellable_test.vcxproj91
-rw-r--r--vsprojects/vs2013/gpr_cmdline_test.vcxproj91
-rw-r--r--vsprojects/vs2013/gpr_log_test.vcxproj91
-rw-r--r--vsprojects/vs2013/grpc.sln64
-rw-r--r--vsprojects/vs2013/grpc.vcxproj322
-rw-r--r--vsprojects/vs2013/grpc_test_util.vcxproj100
27 files changed, 1193 insertions, 42 deletions
diff --git a/Makefile b/Makefile
index 84ddb5449b..28993e04d1 100644
--- a/Makefile
+++ b/Makefile
@@ -712,7 +712,7 @@ clean_libgrpc:
LIBGRPC_TEST_UTIL_SRC = \
test/core/util/grpc_profiler.c \
test/core/util/parse_hexstring.c \
- test/core/util/port.c \
+ test/core/util/port_posix.c \
test/core/util/slice_splitter.c \
test/core/util/test_config.c \
test/core/end2end/end2end_tests.c \
@@ -1645,9 +1645,9 @@ GPR_CANCELLABLE_TEST_SRC = \
GPR_CANCELLABLE_TEST_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(GPR_CANCELLABLE_TEST_SRC))))
GPR_CANCELLABLE_TEST_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(GPR_CANCELLABLE_TEST_SRC))))
-bins/gpr_cancellable_test: $(GPR_CANCELLABLE_TEST_OBJS) libs/libgrpc_test_util.a libs/libgrpc.a libs/libgpr.a
+bins/gpr_cancellable_test: $(GPR_CANCELLABLE_TEST_OBJS) libs/libgrpc_test_util.a libs/libgpr.a
$(E) "[LD] Linking $@"
- $(Q) $(LD) $(LDFLAGS) $(GPR_CANCELLABLE_TEST_OBJS) -Llibs -lgrpc_test_util -lgrpc -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_cancellable_test
+ $(Q) $(LD) $(LDFLAGS) $(GPR_CANCELLABLE_TEST_OBJS) -Llibs -lgrpc_test_util -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_cancellable_test
deps_gpr_cancellable_test: $(GPR_CANCELLABLE_TEST_DEPS)
@@ -1668,9 +1668,9 @@ GPR_LOG_TEST_SRC = \
GPR_LOG_TEST_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(GPR_LOG_TEST_SRC))))
GPR_LOG_TEST_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(GPR_LOG_TEST_SRC))))
-bins/gpr_log_test: $(GPR_LOG_TEST_OBJS) libs/libgrpc_test_util.a libs/libgrpc.a libs/libgpr.a
+bins/gpr_log_test: $(GPR_LOG_TEST_OBJS) libs/libgrpc_test_util.a libs/libgpr.a
$(E) "[LD] Linking $@"
- $(Q) $(LD) $(LDFLAGS) $(GPR_LOG_TEST_OBJS) -Llibs -lgrpc_test_util -lgrpc -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_log_test
+ $(Q) $(LD) $(LDFLAGS) $(GPR_LOG_TEST_OBJS) -Llibs -lgrpc_test_util -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_log_test
deps_gpr_log_test: $(GPR_LOG_TEST_DEPS)
@@ -1691,9 +1691,9 @@ GPR_CMDLINE_TEST_SRC = \
GPR_CMDLINE_TEST_OBJS = $(addprefix objs/, $(addsuffix .o, $(basename $(GPR_CMDLINE_TEST_SRC))))
GPR_CMDLINE_TEST_DEPS = $(addprefix deps/, $(addsuffix .dep, $(basename $(GPR_CMDLINE_TEST_SRC))))
-bins/gpr_cmdline_test: $(GPR_CMDLINE_TEST_OBJS) libs/libgrpc_test_util.a libs/libgrpc.a libs/libgpr.a
+bins/gpr_cmdline_test: $(GPR_CMDLINE_TEST_OBJS) libs/libgrpc_test_util.a libs/libgpr.a
$(E) "[LD] Linking $@"
- $(Q) $(LD) $(LDFLAGS) $(GPR_CMDLINE_TEST_OBJS) -Llibs -lgrpc_test_util -lgrpc -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_cmdline_test
+ $(Q) $(LD) $(LDFLAGS) $(GPR_CMDLINE_TEST_OBJS) -Llibs -lgrpc_test_util -lgpr $(LDLIBS) $(LDLIBS_SECURE) -o bins/gpr_cmdline_test
deps_gpr_cmdline_test: $(GPR_CMDLINE_TEST_DEPS)
diff --git a/build.json b/build.json
index 7f896526fa..3769fe991a 100644
--- a/build.json
+++ b/build.json
@@ -13,6 +13,7 @@
"name": "gpr",
"build": "all",
"secure": false,
+ "vs_project_guid": "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}",
"src": [
"src/core/support/alloc.c",
"src/core/support/cancellable.c",
@@ -76,6 +77,7 @@
"name": "grpc",
"build": "all",
"secure": true,
+ "vs_project_guid": "{29D16885-7228-4C31-81ED-5F9187C7F2A9}",
"alternates": [
{
"name": "grpc_unsecure",
@@ -258,10 +260,11 @@
{
"name": "grpc_test_util",
"build": "private",
+ "vs_project_guid": "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}",
"src": [
"test/core/util/grpc_profiler.c",
"test/core/util/parse_hexstring.c",
- "test/core/util/port.c",
+ "test/core/util/port_posix.c",
"test/core/util/slice_splitter.c",
"test/core/util/test_config.c",
"test/core/end2end/end2end_tests.c",
@@ -276,6 +279,7 @@
"build": "all",
"c++": true,
"secure": true,
+ "vs_project_guid": "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}",
"src": [
"src/cpp/server/server.cc",
"src/cpp/server/server_rpc_handler.cc",
@@ -361,36 +365,36 @@
{
"name": "gpr_cancellable_test",
"build": "test",
+ "vs_project_guid": "{19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}",
"src": [
"test/core/support/cancellable_test.c"
],
"deps": [
"grpc_test_util",
- "grpc",
"gpr"
]
},
{
"name": "gpr_log_test",
"build": "test",
+ "vs_project_guid": "{42B70122-188F-4535-AB74-F061C77068B4}",
"src": [
"test/core/support/log_test.c"
],
"deps": [
"grpc_test_util",
- "grpc",
"gpr"
]
},
{
"name": "gpr_cmdline_test",
"build": "test",
+ "vs_project_guid": "{8F260F48-3C22-48A8-9928-A152ABB2EDF2}",
"src": [
"test/core/support/cmdline_test.c"
],
"deps": [
"grpc_test_util",
- "grpc",
"gpr"
]
},
diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h
index 404543d67b..13ce4744da 100644
--- a/include/grpc/support/port_platform.h
+++ b/include/grpc/support/port_platform.h
@@ -54,6 +54,7 @@
#define GPR_POSIX_TIME 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SOCKET 1
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_ANDROID 1
#define GPR_GCC_SYNC 1
@@ -62,6 +63,7 @@
#define GPR_POSIX_TIME 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SOCKET 1
#define GPR_LINUX 1
#define GPR_GCC_ATOMIC 1
#ifdef _LP64
@@ -74,6 +76,7 @@
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_LOG 1
+#define GPR_POSIX_SOCKET 1
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_GCC_ATOMIC 1
#ifdef _LP64
diff --git a/templates/vsprojects/vs2013/gpr.vcxproj.template b/templates/vsprojects/vs2013/gpr.vcxproj.template
new file mode 100644
index 0000000000..c478aadcdd
--- /dev/null
+++ b/templates/vsprojects/vs2013/gpr.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('gpr', libs, targets)}
diff --git a/templates/vsprojects/vs2013/gpr_cancellable_test.vcxproj.template b/templates/vsprojects/vs2013/gpr_cancellable_test.vcxproj.template
new file mode 100644
index 0000000000..e20be83a78
--- /dev/null
+++ b/templates/vsprojects/vs2013/gpr_cancellable_test.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('gpr_cancellable_test', libs, targets)}
diff --git a/templates/vsprojects/vs2013/gpr_cmdline_test.vcxproj.template b/templates/vsprojects/vs2013/gpr_cmdline_test.vcxproj.template
new file mode 100644
index 0000000000..3be9fb3a9c
--- /dev/null
+++ b/templates/vsprojects/vs2013/gpr_cmdline_test.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('gpr_cmdline_test', libs, targets)}
diff --git a/templates/vsprojects/vs2013/gpr_log_test.vcxproj.template b/templates/vsprojects/vs2013/gpr_log_test.vcxproj.template
new file mode 100644
index 0000000000..07cfb5d338
--- /dev/null
+++ b/templates/vsprojects/vs2013/gpr_log_test.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('gpr_log_test', libs, targets)}
diff --git a/templates/vsprojects/vs2013/grpc.sln.template b/templates/vsprojects/vs2013/grpc.sln.template
new file mode 100644
index 0000000000..2eba4cbe03
--- /dev/null
+++ b/templates/vsprojects/vs2013/grpc.sln.template
@@ -0,0 +1,58 @@
+## Template for Visual Studio solution
+## based on http://msdn.microsoft.com/en-us/library/bb165951(v=vs.90).aspx
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+<%
+## Visual Studio uses GUIDs for project types
+## http://msdn.microsoft.com/en-us/library/hb23x61k%28v=vs.80%29.aspx
+cpp_proj_type = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
+
+for lib in libs:
+ lib.is_library = True
+for target in targets:
+ target.is_library = False
+
+projects = []
+projects.extend(libs)
+projects.extend(targets)
+projects = [project for project in projects if project.get('vs_project_guid', None)]
+
+## Exclude C++ projects for now
+projects = [project for project in projects if not project.get('c++', False)]
+
+for p in projects:
+ p.deps = p.get('deps',[])
+
+project_dict = dict([(p.name, p) for p in projects])
+%>\
+% for project in projects:
+Project("${cpp_proj_type}") = "${project.name}", "${project.name}.vcxproj", "${project.vs_project_guid}"
+ % if project.deps:
+ ProjectSection(ProjectDependencies) = postProject
+ % for dep in project.deps:
+ ${project_dict[dep].vs_project_guid} = ${project_dict[dep].vs_project_guid}
+ % endfor
+ EndProjectSection
+ % endif
+EndProject
+% endfor
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+% for project in projects:
+ ${project.vs_project_guid}.Debug|Win32.ActiveCfg = Debug|Win32
+ ${project.vs_project_guid}.Debug|Win32.Build.0 = Debug|Win32
+ ${project.vs_project_guid}.Release|Win32.ActiveCfg = Release|Win32
+ ${project.vs_project_guid}.Release|Win32.Build.0 = Release|Win32
+% endfor
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/templates/vsprojects/vs2013/grpc.vcxproj.template b/templates/vsprojects/vs2013/grpc.vcxproj.template
new file mode 100644
index 0000000000..3de6453f52
--- /dev/null
+++ b/templates/vsprojects/vs2013/grpc.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('grpc', libs, targets)} \ No newline at end of file
diff --git a/templates/vsprojects/vs2013/grpc_test_util.vcxproj.template b/templates/vsprojects/vs2013/grpc_test_util.vcxproj.template
new file mode 100644
index 0000000000..72e625d9b9
--- /dev/null
+++ b/templates/vsprojects/vs2013/grpc_test_util.vcxproj.template
@@ -0,0 +1,2 @@
+<%namespace file="vcxproj_defs.include" import="gen_project"/>\
+${gen_project('grpc_test_util', libs, targets)} \ No newline at end of file
diff --git a/templates/vsprojects/vs2013/vcxproj_defs.include b/templates/vsprojects/vs2013/vcxproj_defs.include
new file mode 100644
index 0000000000..37fe97d4ea
--- /dev/null
+++ b/templates/vsprojects/vs2013/vcxproj_defs.include
@@ -0,0 +1,138 @@
+<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
+<%def name="get_configuration_type(is_library)">${'StaticLibrary' if is_library else 'Application'}</%def>\
+<%def name="get_subsystem(is_library)">${'Windows' if is_library else 'Console'}</%def>\
+<%def name="gen_project(name, libs, targets)">\
+<%
+## TODO(jtattermusch): this code is c&p from the solution template
+for lib in libs:
+ lib.is_library = True
+for target in targets:
+ target.is_library = False
+
+projects = []
+projects.extend(libs)
+projects.extend(targets)
+projects = [project for project in projects if project.get('vs_project_guid', None)]
+
+## Exclude C++ projects for now
+projects = [project for project in projects if not project.get('c++', False)]
+
+for p in projects:
+ p.deps = p.get('deps',[])
+
+project_dict = dict([(p.name, p) for p in projects])
+%>\
+% for project in projects:
+ % if project.name == name:
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>${project.vs_project_guid}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>${get_configuration_type(project.is_library)}</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>${get_configuration_type(project.is_library)}</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ % if project.get('public_headers',[]):
+ <ItemGroup>
+ % for public_header in project.public_headers:
+ <ClInclude Include="..\..\${to_windows_path(public_header)}" />
+ % endfor
+ </ItemGroup>
+ % endif
+ % if project.get('headers',[]):
+ <ItemGroup>
+ % for header in project.headers:
+ <ClInclude Include="..\..\${to_windows_path(header)}" />
+ % endfor
+ </ItemGroup>
+ % endif
+ % if project.get('src',[]):
+ <ItemGroup>
+ % for src_name in project.src:
+ <ClCompile Include="..\..\${to_windows_path(src_name)}">
+ </ClCompile>
+ % endfor
+ </ItemGroup>
+ % endif
+ % if project.get('deps',[]):
+ <ItemGroup>
+ % for dep in project.deps:
+ <ProjectReference Include="${dep}.vcxproj">
+ <Project>${project_dict[dep].vs_project_guid}</Project>
+ </ProjectReference>
+ % endfor
+ </ItemGroup>
+ % endif
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
+ % endif
+% endfor
+</%def>\ \ No newline at end of file
diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.c
index aebb8b4c41..d0427da47e 100644
--- a/test/core/end2end/cq_verifier.c
+++ b/test/core/end2end/cq_verifier.c
@@ -31,6 +31,13 @@
*
*/
+/* Disable sprintf warnings on Windows (it's fine to do that for test code).
+ Also, cases where sprintf is called are crash sites anyway.
+ TODO(jtattermusch): b/18636890 */
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
#include "test/core/end2end/cq_verifier.h"
#include <stdarg.h>
diff --git a/test/core/end2end/end2end_tests.c b/test/core/end2end/end2end_tests.c
index 7174d09866..45d55e94bc 100644
--- a/test/core/end2end/end2end_tests.c
+++ b/test/core/end2end/end2end_tests.c
@@ -35,12 +35,12 @@
#include <stdio.h>
#include <string.h>
-#include <unistd.h>
#include <grpc/byte_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
+#include <grpc/support/string.h>
#include <grpc/support/useful.h>
#include "test/core/end2end/cq_verifier.h"
@@ -206,15 +206,15 @@ static void simple_request_body2(grpc_end2end_test_fixture f) {
static void test_invoke_simple_request(
grpc_end2end_test_config config, const char *name,
void (*body)(grpc_end2end_test_fixture f)) {
- char fullname[64];
+ char *fullname;
grpc_end2end_test_fixture f;
- sprintf(fullname, "%s/%s", __FUNCTION__, name);
-
+ gpr_asprintf(&fullname, "%s/%s", __FUNCTION__, name);
f = begin_test(config, fullname, NULL, NULL);
body(f);
end_test(&f);
config.tear_down_data(&f);
+ gpr_free(fullname);
}
static void test_invoke_10_simple_requests(grpc_end2end_test_config config) {
diff --git a/test/core/endpoint/endpoint_tests.c b/test/core/endpoint/endpoint_tests.c
index 9cc0eaa959..50919fc45e 100644
--- a/test/core/endpoint/endpoint_tests.c
+++ b/test/core/endpoint/endpoint_tests.c
@@ -56,9 +56,9 @@
*/
-ssize_t count_and_unref_slices(gpr_slice *slices, size_t nslices,
- int *current_data) {
- ssize_t num_bytes = 0;
+size_t count_and_unref_slices(gpr_slice *slices, size_t nslices,
+ int *current_data) {
+ size_t num_bytes = 0;
int i;
int j;
unsigned char *buf;
@@ -76,18 +76,18 @@ ssize_t count_and_unref_slices(gpr_slice *slices, size_t nslices,
static grpc_endpoint_test_fixture begin_test(grpc_endpoint_test_config config,
const char *test_name,
- ssize_t slice_size) {
+ size_t slice_size) {
gpr_log(GPR_INFO, "%s/%s", test_name, config.name);
return config.create_fixture(slice_size);
}
static void end_test(grpc_endpoint_test_config config) { config.clean_up(); }
-static gpr_slice *allocate_blocks(ssize_t num_bytes, ssize_t slice_size,
+static gpr_slice *allocate_blocks(size_t num_bytes, size_t slice_size,
size_t *num_blocks, int *current_data) {
- ssize_t nslices = num_bytes / slice_size + (num_bytes % slice_size ? 1 : 0);
+ size_t nslices = num_bytes / slice_size + (num_bytes % slice_size ? 1 : 0);
gpr_slice *slices = malloc(sizeof(gpr_slice) * nslices);
- ssize_t num_bytes_left = num_bytes;
+ size_t num_bytes_left = num_bytes;
int i;
int j;
unsigned char *buf;
@@ -112,10 +112,10 @@ struct read_and_write_test_state {
grpc_endpoint *write_ep;
gpr_mu mu;
gpr_cv cv;
- ssize_t target_bytes;
- ssize_t bytes_read;
- ssize_t current_write_size;
- ssize_t bytes_written;
+ size_t target_bytes;
+ size_t bytes_read;
+ size_t current_write_size;
+ size_t bytes_written;
int current_read_data;
int current_write_data;
int read_done;
@@ -205,8 +205,8 @@ static void read_and_write_test_write_handler(void *data,
This also includes a test of the shutdown behavior.
*/
static void read_and_write_test(grpc_endpoint_test_config config,
- ssize_t num_bytes, ssize_t write_size,
- ssize_t slice_size, int shutdown) {
+ size_t num_bytes, size_t write_size,
+ size_t slice_size, int shutdown) {
struct read_and_write_test_state state;
gpr_timespec rel_deadline = {20, 0};
gpr_timespec deadline = gpr_time_add(gpr_now(), rel_deadline);
@@ -234,6 +234,9 @@ static void read_and_write_test(grpc_endpoint_test_config config,
state.current_write_data = 0;
/* Get started by pretending an initial write completed */
+ /* NOTE: Sets up initial conditions so we can have the same write handler
+ for the first iteration as for later iterations. It does the right thing
+ even when bytes_written is unsigned. */
state.bytes_written -= state.current_write_size;
read_and_write_test_write_handler(&state, GRPC_ENDPOINT_CB_OK);
@@ -271,7 +274,7 @@ static void read_timeout_test_read_handler(void *data, gpr_slice *slices,
}
static void read_timeout_test(grpc_endpoint_test_config config,
- ssize_t slice_size) {
+ size_t slice_size) {
gpr_timespec timeout = gpr_time_from_micros(10000);
gpr_timespec read_deadline = gpr_time_add(gpr_now(), timeout);
gpr_timespec test_deadline =
@@ -297,7 +300,7 @@ static void write_timeout_test_write_handler(void *data,
}
static void write_timeout_test(grpc_endpoint_test_config config,
- ssize_t slice_size) {
+ size_t slice_size) {
gpr_timespec timeout = gpr_time_from_micros(10000);
gpr_timespec write_deadline = gpr_time_add(gpr_now(), timeout);
gpr_timespec test_deadline =
@@ -370,7 +373,7 @@ static void shutdown_during_write_test_write_handler(
}
static void shutdown_during_write_test(grpc_endpoint_test_config config,
- ssize_t slice_size) {
+ size_t slice_size) {
/* test that shutdown with a pending write creates no leaks */
gpr_timespec deadline;
size_t size;
diff --git a/test/core/endpoint/endpoint_tests.h b/test/core/endpoint/endpoint_tests.h
index 79ee759b45..d5f34374da 100644
--- a/test/core/endpoint/endpoint_tests.h
+++ b/test/core/endpoint/endpoint_tests.h
@@ -48,7 +48,7 @@ struct grpc_endpoint_test_fixture {
struct grpc_endpoint_test_config {
const char *name;
- grpc_endpoint_test_fixture (*create_fixture)(ssize_t slice_size);
+ grpc_endpoint_test_fixture (*create_fixture)(size_t slice_size);
void (*clean_up)();
};
diff --git a/test/core/endpoint/secure_endpoint_test.c b/test/core/endpoint/secure_endpoint_test.c
index 9fc2511763..4fd5dee677 100644
--- a/test/core/endpoint/secure_endpoint_test.c
+++ b/test/core/endpoint/secure_endpoint_test.c
@@ -58,7 +58,7 @@ static void create_sockets(int sv[2]) {
}
static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair(
- ssize_t slice_size, gpr_slice *leftover_slices, size_t leftover_nslices) {
+ size_t slice_size, gpr_slice *leftover_slices, size_t leftover_nslices) {
int sv[2];
tsi_frame_protector *fake_read_protector = tsi_create_fake_protector(NULL);
tsi_frame_protector *fake_write_protector = tsi_create_fake_protector(NULL);
@@ -127,12 +127,12 @@ static grpc_endpoint_test_fixture secure_endpoint_create_fixture_tcp_socketpair(
}
static grpc_endpoint_test_fixture
-secure_endpoint_create_fixture_tcp_socketpair_noleftover(ssize_t slice_size) {
+secure_endpoint_create_fixture_tcp_socketpair_noleftover(size_t slice_size) {
return secure_endpoint_create_fixture_tcp_socketpair(slice_size, NULL, 0);
}
static grpc_endpoint_test_fixture
-secure_endpoint_create_fixture_tcp_socketpair_leftover(ssize_t slice_size) {
+secure_endpoint_create_fixture_tcp_socketpair_leftover(size_t slice_size) {
gpr_slice s =
gpr_slice_from_copied_string("hello world 12345678900987654321");
grpc_endpoint_test_fixture f;
@@ -164,8 +164,7 @@ static void verify_leftover(void *user_data, gpr_slice *slices, size_t nslices,
*(int *)user_data = 1;
}
-static void test_leftover(grpc_endpoint_test_config config,
- ssize_t slice_size) {
+static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) {
grpc_endpoint_test_fixture f = config.create_fixture(slice_size);
int verified = 0;
gpr_log(GPR_INFO, "Start test left over");
@@ -200,7 +199,7 @@ static void destroy_early(void *user_data, gpr_slice *slices, size_t nslices,
/* test which destroys the ep before finishing reading */
static void test_destroy_ep_early(grpc_endpoint_test_config config,
- ssize_t slice_size) {
+ size_t slice_size) {
grpc_endpoint_test_fixture f = config.create_fixture(slice_size);
gpr_log(GPR_INFO, "Start test destroy early");
diff --git a/test/core/endpoint/tcp_test.c b/test/core/endpoint/tcp_test.c
index 7dbc2783e9..c703f92f68 100644
--- a/test/core/endpoint/tcp_test.c
+++ b/test/core/endpoint/tcp_test.c
@@ -490,7 +490,7 @@ void run_tests() {
static void clean_up() { grpc_em_destroy(&g_em); }
static grpc_endpoint_test_fixture create_fixture_tcp_socketpair(
- ssize_t slice_size) {
+ size_t slice_size) {
int sv[2];
grpc_endpoint_test_fixture f;
diff --git a/test/core/transport/transport_end2end_tests.c b/test/core/transport/transport_end2end_tests.c
index 49ce645a64..e35df3acb4 100644
--- a/test/core/transport/transport_end2end_tests.c
+++ b/test/core/transport/transport_end2end_tests.c
@@ -652,12 +652,13 @@ static int count_expectations(test_fixture *f) {
/* Callback for enumerate_expectations that adds an expectation to the log */
static void dump_expectation(void *p, const char *fmt, ...) {
- char buffer[256];
+ char *str;
va_list args;
va_start(args, fmt);
- vsprintf(buffer, fmt, args);
- gpr_log(GPR_INFO, "EXPECTED: %s", buffer);
+ gpr_asprintf(&str, fmt, args);
+ gpr_log(GPR_INFO, "EXPECTED: %s", str);
+ gpr_free(str);
va_end(args);
}
diff --git a/test/core/util/port.c b/test/core/util/port_posix.c
index 133b53fd2b..ab0dcf7d11 100644
--- a/test/core/util/port.c
+++ b/test/core/util/port_posix.c
@@ -31,6 +31,9 @@
*
*/
+#include <grpc/support/port_platform.h>
+#ifdef GPR_POSIX_SOCKET
+
#include "test/core/util/port.h"
#include <netinet/in.h>
@@ -143,3 +146,5 @@ int grpc_pick_unused_port_or_die() {
GPR_ASSERT(port > 0);
return port;
}
+
+#endif /* GPR_POSIX_SOCKET */
diff --git a/vsprojects/README b/vsprojects/README
new file mode 100644
index 0000000000..369f2a4f3a
--- /dev/null
+++ b/vsprojects/README
@@ -0,0 +1 @@
+This directory contains MS Visual Studio project & solution files.
diff --git a/vsprojects/vs2013/gpr.vcxproj b/vsprojects/vs2013/gpr.vcxproj
new file mode 100644
index 0000000000..f4b30534a6
--- /dev/null
+++ b/vsprojects/vs2013/gpr.vcxproj
@@ -0,0 +1,161 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\include\grpc\support\alloc.h" />
+ <ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h" />
+ <ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h" />
+ <ClInclude Include="..\..\include\grpc\support\atm.h" />
+ <ClInclude Include="..\..\include\grpc\support\atm_win32.h" />
+ <ClInclude Include="..\..\include\grpc\support\cancellable_platform.h" />
+ <ClInclude Include="..\..\include\grpc\support\cmdline.h" />
+ <ClInclude Include="..\..\include\grpc\support\histogram.h" />
+ <ClInclude Include="..\..\include\grpc\support\host_port.h" />
+ <ClInclude Include="..\..\include\grpc\support\log.h" />
+ <ClInclude Include="..\..\include\grpc\support\port_platform.h" />
+ <ClInclude Include="..\..\include\grpc\support\slice_buffer.h" />
+ <ClInclude Include="..\..\include\grpc\support\slice.h" />
+ <ClInclude Include="..\..\include\grpc\support\string.h" />
+ <ClInclude Include="..\..\include\grpc\support\sync_generic.h" />
+ <ClInclude Include="..\..\include\grpc\support\sync.h" />
+ <ClInclude Include="..\..\include\grpc\support\sync_posix.h" />
+ <ClInclude Include="..\..\include\grpc\support\sync_win32.h" />
+ <ClInclude Include="..\..\include\grpc\support\thd.h" />
+ <ClInclude Include="..\..\include\grpc\support\thd_posix.h" />
+ <ClInclude Include="..\..\include\grpc\support\thd_win32.h" />
+ <ClInclude Include="..\..\include\grpc\support\time.h" />
+ <ClInclude Include="..\..\include\grpc\support\time_posix.h" />
+ <ClInclude Include="..\..\include\grpc\support\time_win32.h" />
+ <ClInclude Include="..\..\include\grpc\support\useful.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\src\core\support\cpu.h" />
+ <ClInclude Include="..\..\src\core\support\murmur_hash.h" />
+ <ClInclude Include="..\..\src\core\support\thd_internal.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\src\core\support\alloc.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\cancellable.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\cmdline.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\cpu_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\histogram.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\host_port.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\log.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\log_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\log_linux.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\log_android.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\log_win32.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\murmur_hash.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\slice.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\slice_buffer.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\string.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\string_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\string_win32.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\sync.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\sync_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\thd_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\thd_win32.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\time.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\time_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\support\time_win32.c">
+ </ClCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
+
diff --git a/vsprojects/vs2013/gpr_cancellable_test.vcxproj b/vsprojects/vs2013/gpr_cancellable_test.vcxproj
new file mode 100644
index 0000000000..447d3b7802
--- /dev/null
+++ b/vsprojects/vs2013/gpr_cancellable_test.vcxproj
@@ -0,0 +1,91 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\test\core\support\cancellable_test.c">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="grpc_test_util.vcxproj">
+ <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+ </ProjectReference>
+ <ProjectReference Include="gpr.vcxproj">
+ <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
+
diff --git a/vsprojects/vs2013/gpr_cmdline_test.vcxproj b/vsprojects/vs2013/gpr_cmdline_test.vcxproj
new file mode 100644
index 0000000000..0ff731c293
--- /dev/null
+++ b/vsprojects/vs2013/gpr_cmdline_test.vcxproj
@@ -0,0 +1,91 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8F260F48-3C22-48A8-9928-A152ABB2EDF2}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\test\core\support\cmdline_test.c">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="grpc_test_util.vcxproj">
+ <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+ </ProjectReference>
+ <ProjectReference Include="gpr.vcxproj">
+ <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
+
diff --git a/vsprojects/vs2013/gpr_log_test.vcxproj b/vsprojects/vs2013/gpr_log_test.vcxproj
new file mode 100644
index 0000000000..9354773be4
--- /dev/null
+++ b/vsprojects/vs2013/gpr_log_test.vcxproj
@@ -0,0 +1,91 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{42B70122-188F-4535-AB74-F061C77068B4}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\test\core\support\log_test.c">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="grpc_test_util.vcxproj">
+ <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+ </ProjectReference>
+ <ProjectReference Include="gpr.vcxproj">
+ <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
+
diff --git a/vsprojects/vs2013/grpc.sln b/vsprojects/vs2013/grpc.sln
new file mode 100644
index 0000000000..2b39c07c6c
--- /dev/null
+++ b/vsprojects/vs2013/grpc.sln
@@ -0,0 +1,64 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr", "gpr.vcxproj", "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc", "grpc.vcxproj", "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_cancellable_test", "gpr_cancellable_test.vcxproj", "{19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_log_test", "gpr_log_test.vcxproj", "{42B70122-188F-4535-AB74-F061C77068B4}"
+ ProjectSection(ProjectDependencies) = postProject
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_cmdline_test", "gpr_cmdline_test.vcxproj", "{8F260F48-3C22-48A8-9928-A152ABB2EDF2}"
+ ProjectSection(ProjectDependencies) = postProject
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.Build.0 = Debug|Win32
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.ActiveCfg = Release|Win32
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.Build.0 = Release|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.Build.0 = Debug|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.ActiveCfg = Release|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.Build.0 = Release|Win32
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.Build.0 = Debug|Win32
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.ActiveCfg = Release|Win32
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.Build.0 = Release|Win32
+ {19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}.Debug|Win32.Build.0 = Debug|Win32
+ {19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}.Release|Win32.ActiveCfg = Release|Win32
+ {19730BF6-7F8C-44EF-ACDC-2CA50C0403E7}.Release|Win32.Build.0 = Release|Win32
+ {42B70122-188F-4535-AB74-F061C77068B4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {42B70122-188F-4535-AB74-F061C77068B4}.Debug|Win32.Build.0 = Debug|Win32
+ {42B70122-188F-4535-AB74-F061C77068B4}.Release|Win32.ActiveCfg = Release|Win32
+ {42B70122-188F-4535-AB74-F061C77068B4}.Release|Win32.Build.0 = Release|Win32
+ {8F260F48-3C22-48A8-9928-A152ABB2EDF2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8F260F48-3C22-48A8-9928-A152ABB2EDF2}.Debug|Win32.Build.0 = Debug|Win32
+ {8F260F48-3C22-48A8-9928-A152ABB2EDF2}.Release|Win32.ActiveCfg = Release|Win32
+ {8F260F48-3C22-48A8-9928-A152ABB2EDF2}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/vsprojects/vs2013/grpc.vcxproj b/vsprojects/vs2013/grpc.vcxproj
new file mode 100644
index 0000000000..85c36be9ca
--- /dev/null
+++ b/vsprojects/vs2013/grpc.vcxproj
@@ -0,0 +1,322 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\include\grpc\byte_buffer.h" />
+ <ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
+ <ClInclude Include="..\..\include\grpc\grpc.h" />
+ <ClInclude Include="..\..\include\grpc\grpc_security.h" />
+ <ClInclude Include="..\..\include\grpc\status.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\src\core\channel\census_filter.h" />
+ <ClInclude Include="..\..\src\core\channel\channel_args.h" />
+ <ClInclude Include="..\..\src\core\channel\channel_stack.h" />
+ <ClInclude Include="..\..\src\core\channel\client_channel.h" />
+ <ClInclude Include="..\..\src\core\channel\client_setup.h" />
+ <ClInclude Include="..\..\src\core\channel\connected_channel.h" />
+ <ClInclude Include="..\..\src\core\channel\http_client_filter.h" />
+ <ClInclude Include="..\..\src\core\channel\http_filter.h" />
+ <ClInclude Include="..\..\src\core\channel\http_server_filter.h" />
+ <ClInclude Include="..\..\src\core\channel\metadata_buffer.h" />
+ <ClInclude Include="..\..\src\core\channel\noop_filter.h" />
+ <ClInclude Include="..\..\src\core\compression\algorithm.h" />
+ <ClInclude Include="..\..\src\core\compression\message_compress.h" />
+ <ClInclude Include="..\..\src\core\endpoint\endpoint.h" />
+ <ClInclude Include="..\..\src\core\endpoint\resolve_address.h" />
+ <ClInclude Include="..\..\src\core\endpoint\secure_endpoint.h" />
+ <ClInclude Include="..\..\src\core\endpoint\socket_utils.h" />
+ <ClInclude Include="..\..\src\core\endpoint\tcp_client.h" />
+ <ClInclude Include="..\..\src\core\endpoint\tcp.h" />
+ <ClInclude Include="..\..\src\core\endpoint\tcp_server.h" />
+ <ClInclude Include="..\..\src\core\eventmanager\em.h" />
+ <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
+ <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
+ <ClInclude Include="..\..\src\core\httpcli\httpcli_security_context.h" />
+ <ClInclude Include="..\..\src\core\httpcli\parser.h" />
+ <ClInclude Include="..\..\src\core\security\auth.h" />
+ <ClInclude Include="..\..\src\core\security\credentials.h" />
+ <ClInclude Include="..\..\src\core\security\google_root_certs.h" />
+ <ClInclude Include="..\..\src\core\security\secure_transport_setup.h" />
+ <ClInclude Include="..\..\src\core\security\security_context.h" />
+ <ClInclude Include="..\..\src\core\statistics\census_interface.h" />
+ <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" />
+ <ClInclude Include="..\..\src\core\statistics\hash_table.h" />
+ <ClInclude Include="..\..\src\core\statistics\log.h" />
+ <ClInclude Include="..\..\src\core\statistics\window_stats.h" />
+ <ClInclude Include="..\..\src\core\surface\call.h" />
+ <ClInclude Include="..\..\src\core\surface\channel.h" />
+ <ClInclude Include="..\..\src\core\surface\client.h" />
+ <ClInclude Include="..\..\src\core\surface\lame_client.h" />
+ <ClInclude Include="..\..\src\core\surface\completion_queue.h" />
+ <ClInclude Include="..\..\src\core\surface\event_string.h" />
+ <ClInclude Include="..\..\src\core\surface\server.h" />
+ <ClInclude Include="..\..\src\core\surface\surface_em.h" />
+ <ClInclude Include="..\..\src\core\surface\surface_trace.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2_transport.h" />
+ <ClInclude Include="..\..\src\core\transport\chttp2\varint.h" />
+ <ClInclude Include="..\..\src\core\transport\metadata.h" />
+ <ClInclude Include="..\..\src\core\transport\stream_op.h" />
+ <ClInclude Include="..\..\src\core\transport\transport.h" />
+ <ClInclude Include="..\..\src\core\transport\transport_impl.h" />
+ <ClInclude Include="..\..\src\core\tsi\fake_transport_security.h" />
+ <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" />
+ <ClInclude Include="..\..\src\core\tsi\transport_security.h" />
+ <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" />
+ <ClInclude Include="..\..\src\core\tsi\transport_security_test_lib.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\src\core\channel\call_op_string.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\census_filter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\channel_args.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\channel_stack.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\client_channel.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\client_setup.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\connected_channel.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\http_client_filter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\http_filter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\http_server_filter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\metadata_buffer.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\channel\noop_filter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\compression\algorithm.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\compression\message_compress.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\endpoint.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\resolve_address.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\socket_utils.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\socket_utils_linux.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\socket_utils_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\tcp.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\tcp_client.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\tcp_server.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\eventmanager\em.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\eventmanager\em_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\byte_buffer.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\call.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\channel.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\channel_create.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\client.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\lame_client.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\completion_queue.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\event_string.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\init.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\server.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\server_chttp2.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\server_create.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\surface_em.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\metadata.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\stream_op.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\transport\transport.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\census_init.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\census_rpc_stats.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\census_tracing.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\log.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\window_stats.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\statistics\hash_table.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\format_request.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\httpcli_security_context.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\httpcli\parser.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\auth.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\credentials.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\google_root_certs.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\security_context.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\surface\secure_server_create.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\endpoint\secure_endpoint.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\tsi\transport_security.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
+ </ClCompile>
+ <ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
+ </ClCompile>
+ <ClCompile Include="..\..\third_party\cJSON\cJSON.c">
+ </ClCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/vsprojects/vs2013/grpc_test_util.vcxproj b/vsprojects/vs2013/grpc_test_util.vcxproj
new file mode 100644
index 0000000000..8fee039bb7
--- /dev/null
+++ b/vsprojects/vs2013/grpc_test_util.vcxproj
@@ -0,0 +1,100 @@
+<?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="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace></RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <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>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <AdditionalIncludeDirectories>$(SolutionDir)\..\..;$(SolutionDir)\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\test\core\util\grpc_profiler.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\util\parse_hexstring.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\util\port_posix.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\util\slice_splitter.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\util\test_config.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\end2end\end2end_tests.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\end2end\cq_verifier.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\endpoint\endpoint_tests.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\transport\transport_end2end_tests.c">
+ </ClCompile>
+ <ClCompile Include="..\..\test\core\statistics\log_tests.c">
+ </ClCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>