mirror of
https://github.com/unclechu/gRPC-haskell.git
synced 2024-11-23 03:29:42 +01:00
Upgrade nixpkgs to the latest nixpkgs-unstable (#84)
* Upgrade nixpkgs to the latest nixpkgs-unstable * Bump proto3-suite
This commit is contained in:
parent
a818985323
commit
6e09678dc7
20 changed files with 67 additions and 269 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -8,3 +8,6 @@ examples/echo/echo-cpp/echo-server
|
||||||
benchmarks.html
|
benchmarks.html
|
||||||
result
|
result
|
||||||
|
|
||||||
|
*~
|
||||||
|
cabal.project.local
|
||||||
|
dist-newstyle/
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
{ mkDerivation, base, containers, deepseq, random, stdenv
|
|
||||||
, template-haskell, tf-random, transformers
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "QuickCheck";
|
|
||||||
version = "2.10";
|
|
||||||
sha256 = "f6f55b798044ad985cce9c38a3d774b32811a0ffdb2066ca9ed45f32b25de7af";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
base containers deepseq random template-haskell tf-random
|
|
||||||
transformers
|
|
||||||
];
|
|
||||||
testHaskellDepends = [ base ];
|
|
||||||
homepage = "https://github.com/nick8325/quickcheck";
|
|
||||||
description = "Automatic testing of Haskell programs";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{ mkDerivation, attoparsec, base, base-compat, base-orphans
|
|
||||||
, base16-bytestring, bytestring, containers, deepseq, directory
|
|
||||||
, dlist, filepath, generic-deriving, ghc-prim, hashable
|
|
||||||
, hashable-time, HUnit, integer-logarithms, QuickCheck
|
|
||||||
, quickcheck-instances, scientific, stdenv, tagged
|
|
||||||
, template-haskell, test-framework, test-framework-hunit
|
|
||||||
, test-framework-quickcheck2, text, time, time-locale-compat
|
|
||||||
, unordered-containers, uuid-types, vector
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "aeson";
|
|
||||||
version = "1.1.1.0";
|
|
||||||
sha256 = "1mkj4a09x9psmgq9sg5nz9va76756zfm97ds2gk2qpgxc7nr2dq8";
|
|
||||||
revision = "2";
|
|
||||||
editedCabalFile = "10bc20f8807990e71f5db74a1b7029f81f888c6f9d1c03e93883555fd1291e84";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
attoparsec base base-compat bytestring containers deepseq dlist
|
|
||||||
ghc-prim hashable scientific tagged template-haskell text time
|
|
||||||
time-locale-compat unordered-containers uuid-types vector
|
|
||||||
];
|
|
||||||
testHaskellDepends = [
|
|
||||||
attoparsec base base-compat base-orphans base16-bytestring
|
|
||||||
bytestring containers directory dlist filepath generic-deriving
|
|
||||||
ghc-prim hashable hashable-time HUnit integer-logarithms QuickCheck
|
|
||||||
quickcheck-instances scientific tagged template-haskell
|
|
||||||
test-framework test-framework-hunit test-framework-quickcheck2 text
|
|
||||||
time time-locale-compat unordered-containers uuid-types vector
|
|
||||||
];
|
|
||||||
homepage = "https://github.com/bos/aeson";
|
|
||||||
description = "Fast JSON parsing and encoding";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{ mkDerivation, base, Cabal, directory, filepath, stdenv }:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "cabal-doctest";
|
|
||||||
version = "1.0.2";
|
|
||||||
sha256 = "0h3wsjf2mg8kw1zvxc0f9nzchj5kzvza9z0arcyixkd9rkgqq6sa";
|
|
||||||
libraryHaskellDepends = [ base Cabal directory filepath ];
|
|
||||||
homepage = "https://github.com/phadej/cabal-doctest";
|
|
||||||
description = "A Setup.hs helper for doctests running";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ darwin, stdenv, lib, fetchgit, autoconf, automake, libtool, which, zlib
|
{ darwin, stdenv, lib, fetchgit, fixDarwinDylibNames, autoconf, automake, libtool, which, zlib
|
||||||
, openssl
|
, openssl
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
|
||||||
sha256 = "19ldbjlnbc287hkaylsigm8w9fai2bjdbfxk6315kl75cq54iprr";
|
sha256 = "19ldbjlnbc287hkaylsigm8w9fai2bjdbfxk6315kl75cq54iprr";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||||
|
|
||||||
# `grpc`'s `Makefile` does some magic to detect the correct `ld` and `strip`
|
# `grpc`'s `Makefile` does some magic to detect the correct `ld` and `strip`
|
||||||
# to use along with their flags, too. If Nix supplies `$LD` and `$STRIP` then
|
# to use along with their flags, too. If Nix supplies `$LD` and `$STRIP` then
|
||||||
# this auto-detection fails and the build fails, which is why we unset the
|
# this auto-detection fails and the build fails, which is why we unset the
|
||||||
|
@ -30,7 +32,7 @@ stdenv.mkDerivation rec {
|
||||||
which
|
which
|
||||||
zlib
|
zlib
|
||||||
openssl
|
openssl
|
||||||
];
|
] ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
||||||
|
|
||||||
# Some versions of `ar` (such as the one provided by OS X) require an explicit
|
# Some versions of `ar` (such as the one provided by OS X) require an explicit
|
||||||
# `-r` flag, whereas other versions assume `-r` is the default if no mode is
|
# `-r` flag, whereas other versions assume `-r` is the default if no mode is
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
{ mkDerivation, aeson, base, base-compat, hashable, lens
|
|
||||||
, QuickCheck, semigroupoids, semigroups, stdenv, tasty
|
|
||||||
, tasty-quickcheck, text, transformers, unordered-containers
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "insert-ordered-containers";
|
|
||||||
version = "0.2.1.0";
|
|
||||||
sha256 = "1612f455dw37da9g7bsd1s5kyi84mnr1ifnjw69892amyimi47fp";
|
|
||||||
revision = "3";
|
|
||||||
editedCabalFile = "6fdce987672b006226243aa17522b57ec7a9e1cab247802eddbdaa9dc5b06446";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
aeson base base-compat hashable lens semigroupoids semigroups text
|
|
||||||
transformers unordered-containers
|
|
||||||
];
|
|
||||||
testHaskellDepends = [
|
|
||||||
aeson base base-compat hashable lens QuickCheck semigroupoids
|
|
||||||
semigroups tasty tasty-quickcheck text transformers
|
|
||||||
unordered-containers
|
|
||||||
];
|
|
||||||
homepage = "https://github.com/phadej/insert-ordered-containers#readme";
|
|
||||||
description = "Associative containers retating insertion order for traversals";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{ mkDerivation, ansi-wl-pprint, base, bytestring, process
|
|
||||||
, QuickCheck, stdenv, transformers, transformers-compat
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "optparse-applicative";
|
|
||||||
version = "0.14.0.0";
|
|
||||||
sha256 = "06iwp1qsq0gjhnhxwyhdhldwvhlgcik6lx5jxpbb40fispyk4nxm";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
ansi-wl-pprint base process transformers transformers-compat
|
|
||||||
];
|
|
||||||
testHaskellDepends = [ base bytestring QuickCheck ];
|
|
||||||
homepage = "https://github.com/pcapriotti/optparse-applicative";
|
|
||||||
description = "Utilities and combinators for parsing command line options";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{ mkDerivation, base, bytestring, optparse-applicative, semigroups
|
|
||||||
, stdenv, system-filepath, text, time, transformers, void
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "optparse-generic";
|
|
||||||
version = "1.2.1";
|
|
||||||
sha256 = "1dk945dp98mwk1v4y0cky3z0ngmd29nbg6fbaaxnigcrgpbvkjml";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
base bytestring optparse-applicative semigroups system-filepath
|
|
||||||
text time transformers void
|
|
||||||
];
|
|
||||||
description = "Auto-generate a command-line parser for your datatype";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,20 +1,21 @@
|
||||||
{ mkDerivation, aeson, aeson-pretty, attoparsec, base
|
{ mkDerivation, aeson, aeson-pretty, attoparsec, base
|
||||||
, base64-bytestring, binary, bytestring, cereal, containers
|
, base64-bytestring, binary, bytestring, cereal, containers
|
||||||
, contravariant, deepseq, doctest, fetchgit, filepath, foldl
|
, contravariant, deepseq, doctest, fetchgit, filepath, foldl
|
||||||
, hashable, haskell-src, insert-ordered-containers, lens, mtl
|
, generic-arbitrary, hashable, haskell-src
|
||||||
, neat-interpolation, optparse-applicative, optparse-generic
|
, insert-ordered-containers, lens, mtl, neat-interpolation
|
||||||
, parsec, parsers, pretty, pretty-show, proto3-wire, QuickCheck
|
, optparse-applicative, optparse-generic, parsec, parsers, pretty
|
||||||
, quickcheck-instances, range-set-list, safe, semigroups, stdenv
|
, pretty-show, proto3-wire, QuickCheck, quickcheck-instances
|
||||||
, swagger2, system-filepath, tasty, tasty-hunit, tasty-quickcheck
|
, range-set-list, safe, semigroups, stdenv, swagger2
|
||||||
, text, transformers, turtle, vector
|
, system-filepath, tasty, tasty-hunit, tasty-quickcheck, text
|
||||||
|
, transformers, turtle, vector
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "proto3-suite";
|
pname = "proto3-suite";
|
||||||
version = "0.4.0.0";
|
version = "0.4.0.0";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://github.com/awakesecurity/proto3-suite.git";
|
url = "https://github.com/awakesecurity/proto3-suite";
|
||||||
sha256 = "091db048hgcq5idvf5gaiqb6hzbs7g1dz6xjqdx61dw2yxgdm957";
|
sha256 = "0g7j7axx9rkrzw32ky9xl08zj34rx4mqafd89lrpnsi8lcq2z06j";
|
||||||
rev = "973c317b91405a11438e3a21706024bfa3d754df";
|
rev = "3f6dd6f612cf2eba3c05798926ff924b0d5ab4fa";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
isLibrary = true;
|
isLibrary = true;
|
||||||
|
@ -34,9 +35,9 @@ mkDerivation {
|
||||||
];
|
];
|
||||||
testHaskellDepends = [
|
testHaskellDepends = [
|
||||||
aeson attoparsec base base64-bytestring bytestring cereal
|
aeson attoparsec base base64-bytestring bytestring cereal
|
||||||
containers deepseq doctest mtl pretty-show proto3-wire QuickCheck
|
containers deepseq doctest generic-arbitrary mtl pretty-show
|
||||||
semigroups swagger2 tasty tasty-hunit tasty-quickcheck text
|
proto3-wire QuickCheck semigroups swagger2 tasty tasty-hunit
|
||||||
transformers turtle vector
|
tasty-quickcheck text transformers turtle vector
|
||||||
];
|
];
|
||||||
description = "A low level library for writing out data in the Protocol Buffers wire format";
|
description = "A low level library for writing out data in the Protocol Buffers wire format";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
|
|
|
@ -4,11 +4,12 @@
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
pname = "proto3-wire";
|
pname = "proto3-wire";
|
||||||
version = "1.0.0";
|
version = "1.1.0";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://github.com/awakenetworks/proto3-wire.git";
|
url = "https://github.com/awakesecurity/proto3-wire.git";
|
||||||
sha256 = "14n0d16an782ayipirm5v2mvp58jgf65xvffqzp08p50sksil3gi";
|
sha256 = "16l1rnnygwk1b2sb3l6klhr6ad0wvry204icxnc81c6rbzbk6rqc";
|
||||||
rev = "a938330bf794cf3fa05591d03906915df98d157c";
|
rev = "4f355bbac895d577d8a28f567ab4380f042ccc24";
|
||||||
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
libraryHaskellDepends = [
|
libraryHaskellDepends = [
|
||||||
base bytestring cereal containers deepseq hashable QuickCheck safe
|
base bytestring cereal containers deepseq hashable QuickCheck safe
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
{ mkDerivation, array, base, base-compat, bytestring
|
|
||||||
, case-insensitive, containers, hashable, old-time, QuickCheck
|
|
||||||
, scientific, stdenv, tagged, text, time, transformers
|
|
||||||
, transformers-compat, unordered-containers, uuid-types, vector
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "quickcheck-instances";
|
|
||||||
version = "0.3.15";
|
|
||||||
sha256 = "9e0efd0debe1fe390c97d7b3d80d59f3221f2ff4aa1649a1929b4a118156dc0a";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
array base base-compat bytestring case-insensitive containers
|
|
||||||
hashable old-time QuickCheck scientific tagged text time
|
|
||||||
transformers transformers-compat unordered-containers uuid-types
|
|
||||||
vector
|
|
||||||
];
|
|
||||||
testHaskellDepends = [
|
|
||||||
base containers QuickCheck tagged uuid-types
|
|
||||||
];
|
|
||||||
homepage = "https://github.com/phadej/qc-instances";
|
|
||||||
description = "Common quickcheck instances";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
{ mkDerivation, aeson, aeson-qq, base, base-compat, bytestring
|
|
||||||
, Cabal, cabal-doctest, containers, doctest, generics-sop, Glob
|
|
||||||
, hashable, hspec, http-media, HUnit, insert-ordered-containers
|
|
||||||
, lens, mtl, network, QuickCheck, scientific, stdenv
|
|
||||||
, template-haskell, text, time, transformers, transformers-compat
|
|
||||||
, unordered-containers, uuid-types, vector
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "swagger2";
|
|
||||||
version = "2.1.6";
|
|
||||||
sha256 = "01a29h56vfyw0ilij1pn6qwy50ca90kyj884vs1q52vvh572758j";
|
|
||||||
setupHaskellDepends = [ base Cabal cabal-doctest ];
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
aeson base base-compat bytestring containers generics-sop hashable
|
|
||||||
http-media insert-ordered-containers lens mtl network scientific
|
|
||||||
template-haskell text time transformers transformers-compat
|
|
||||||
unordered-containers uuid-types vector
|
|
||||||
];
|
|
||||||
testHaskellDepends = [
|
|
||||||
aeson aeson-qq base base-compat bytestring containers doctest Glob
|
|
||||||
hashable hspec HUnit insert-ordered-containers lens mtl QuickCheck
|
|
||||||
text time unordered-containers vector
|
|
||||||
];
|
|
||||||
homepage = "https://github.com/GetShopTV/swagger2";
|
|
||||||
description = "Swagger 2.0 data model";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{ mkDerivation, ansi-wl-pprint, async, base, bytestring, clock
|
|
||||||
, directory, doctest, foldl, hostname, managed, optional-args
|
|
||||||
, optparse-applicative, process, semigroups, stdenv, stm
|
|
||||||
, system-fileio, system-filepath, temporary, text, time
|
|
||||||
, transformers, unix, unix-compat
|
|
||||||
}:
|
|
||||||
mkDerivation {
|
|
||||||
pname = "turtle";
|
|
||||||
version = "1.3.6";
|
|
||||||
sha256 = "0fr8p6rnk2lrsgbfh60jlqcjr0nxrh3ywxsj5d4psck0kgyhvg1m";
|
|
||||||
libraryHaskellDepends = [
|
|
||||||
ansi-wl-pprint async base bytestring clock directory foldl hostname
|
|
||||||
managed optional-args optparse-applicative process semigroups stm
|
|
||||||
system-fileio system-filepath temporary text time transformers unix
|
|
||||||
unix-compat
|
|
||||||
];
|
|
||||||
testHaskellDepends = [ base doctest system-filepath temporary ];
|
|
||||||
description = "Shell programming, Haskell-style";
|
|
||||||
license = stdenv.lib.licenses.bsd3;
|
|
||||||
}
|
|
|
@ -7,7 +7,7 @@
|
||||||
# The SHA256 will be printed as the last line of stdout.
|
# The SHA256 will be printed as the last line of stdout.
|
||||||
|
|
||||||
import ./fetch-nixpkgs.nix {
|
import ./fetch-nixpkgs.nix {
|
||||||
rev = "74286ec9e76be7cd00c4247b9acb430c4bd9f1ce";
|
rev = "fa12335f425808f53121713f501f3335878e6901";
|
||||||
sha256 = "0njb3qd2wxj7gil8y61lwh7zacmvr6zklv67w5zmvifi1fvalvdg";
|
sha256 = "1fjyvjxvymz8yd65ahgm798jp9vdcfy7s58zb5ns2iq2ak0h9j8p";
|
||||||
outputSha256 = "13ydgpzl5nix4gc358iy9zjd5nrrpbpwpxmfhis4aai2zmkja3ak";
|
outputSha256 = "1qkihrm8xfrh93c7wh1d1x01p7mgv82b2ycpmn9jm5l7976g31vr";
|
||||||
}
|
}
|
||||||
|
|
44
release.nix
44
release.nix
|
@ -64,7 +64,7 @@ let
|
||||||
packageOverrides = pkgs: rec {
|
packageOverrides = pkgs: rec {
|
||||||
protobuf3_2NoCheck =
|
protobuf3_2NoCheck =
|
||||||
pkgs.stdenv.lib.overrideDerivation
|
pkgs.stdenv.lib.overrideDerivation
|
||||||
pkgs.pythonPackages.protobuf3_2
|
pkgs.pythonPackages.protobuf
|
||||||
(oldAttrs : {doCheck = false; doInstallCheck = false;});
|
(oldAttrs : {doCheck = false; doInstallCheck = false;});
|
||||||
|
|
||||||
cython = pkgs.pythonPackages.buildPythonPackage rec {
|
cython = pkgs.pythonPackages.buildPythonPackage rec {
|
||||||
|
@ -178,41 +178,23 @@ let
|
||||||
preBuild = (oldAttributes.preBuild or "") +
|
preBuild = (oldAttributes.preBuild or "") +
|
||||||
pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
|
pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
|
||||||
export DYLD_LIBRARY_PATH=${grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
export DYLD_LIBRARY_PATH=${grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
||||||
|
'' +
|
||||||
|
pkgs.lib.optionalString pkgs.stdenv.isLinux ''
|
||||||
|
export LD_LIBRARY_PATH=${grpc}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
|
||||||
'';
|
'';
|
||||||
|
|
||||||
shellHook = (oldAttributes.shellHook or "") +
|
shellHook = (oldAttributes.shellHook or "") +
|
||||||
pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
|
pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
|
||||||
export DYLD_LIBRARY_PATH=${grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
export DYLD_LIBRARY_PATH=${grpc}/lib''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH
|
||||||
|
'' +
|
||||||
|
pkgs.lib.optionalString pkgs.stdenv.isLinux ''
|
||||||
|
export LD_LIBRARY_PATH=${grpc}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
haskellPackages = pkgs.haskellPackages.override {
|
haskellPackages = pkgs.haskellPackages.override {
|
||||||
overrides = haskellPackagesNew: haskellPackagesOld: rec {
|
overrides = haskellPackagesNew: haskellPackagesOld: rec {
|
||||||
attoparsec =
|
|
||||||
pkgs.haskell.lib.dontCheck haskellPackagesOld.attoparsec;
|
|
||||||
|
|
||||||
aeson =
|
|
||||||
pkgs.haskell.lib.dontCheck
|
|
||||||
(haskellPackagesNew.callPackage ./nix/aeson.nix {});
|
|
||||||
|
|
||||||
cabal-doctest =
|
|
||||||
haskellPackagesNew.callPackage ./nix/cabal-doctest.nix { };
|
|
||||||
|
|
||||||
edit-distance =
|
|
||||||
pkgs.haskell.lib.dontCheck haskellPackagesOld.edit-distance;
|
|
||||||
|
|
||||||
http-media =
|
|
||||||
pkgs.haskell.lib.dontCheck haskellPackagesOld.http-media;
|
|
||||||
|
|
||||||
insert-ordered-containers =
|
|
||||||
haskellPackagesNew.callPackage ./nix/insert-ordered-containers.nix { };
|
|
||||||
|
|
||||||
optparse-applicative =
|
|
||||||
haskellPackagesNew.callPackage ./nix/optparse-applicative.nix { };
|
|
||||||
|
|
||||||
optparse-generic =
|
|
||||||
haskellPackagesNew.callPackage ./nix/optparse-generic.nix { };
|
|
||||||
|
|
||||||
proto3-wire =
|
proto3-wire =
|
||||||
haskellPackagesNew.callPackage ./nix/proto3-wire.nix { };
|
haskellPackagesNew.callPackage ./nix/proto3-wire.nix { };
|
||||||
|
@ -221,12 +203,6 @@ let
|
||||||
pkgs.haskell.lib.dontCheck
|
pkgs.haskell.lib.dontCheck
|
||||||
(haskellPackagesNew.callPackage ./nix/proto3-suite.nix {});
|
(haskellPackagesNew.callPackage ./nix/proto3-suite.nix {});
|
||||||
|
|
||||||
QuickCheck =
|
|
||||||
(haskellPackagesNew.callPackage ./nix/QuickCheck.nix {});
|
|
||||||
|
|
||||||
quickcheck-instances =
|
|
||||||
(haskellPackagesNew.callPackage ./nix/quickcheck-instances.nix {});
|
|
||||||
|
|
||||||
grpc-haskell-core =
|
grpc-haskell-core =
|
||||||
usesGRPC
|
usesGRPC
|
||||||
(pkgs.haskell.lib.overrideCabal
|
(pkgs.haskell.lib.overrideCabal
|
||||||
|
@ -303,12 +279,6 @@ let
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
swagger2 =
|
|
||||||
pkgs.haskell.lib.dontCheck (pkgs.haskell.lib.dontHaddock (haskellPackagesNew.callPackage ./nix/swagger2.nix { }));
|
|
||||||
|
|
||||||
turtle =
|
|
||||||
haskellPackagesNew.callPackage ./nix/turtle.nix { };
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
11
stack.yaml
11
stack.yaml
|
@ -2,7 +2,7 @@
|
||||||
# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration/
|
# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration/
|
||||||
|
|
||||||
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
|
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
|
||||||
resolver: lts-8.23
|
resolver: lts-14.1
|
||||||
|
|
||||||
# Local packages, usually specified by relative directory name
|
# Local packages, usually specified by relative directory name
|
||||||
packages:
|
packages:
|
||||||
|
@ -10,17 +10,12 @@ packages:
|
||||||
- 'core'
|
- 'core'
|
||||||
- location:
|
- location:
|
||||||
git: git@github.com:awakesecurity/proto3-suite.git
|
git: git@github.com:awakesecurity/proto3-suite.git
|
||||||
commit: bb66853dcaa7372ef061cf83f39e4ba5193898de
|
commit: 3f6dd6f612cf2eba3c05798926ff924b0d5ab4fa
|
||||||
extra-dep: true
|
extra-dep: true
|
||||||
- location:
|
- location:
|
||||||
git: git@github.com:awakesecurity/proto3-wire.git
|
git: git@github.com:awakesecurity/proto3-wire.git
|
||||||
commit: a938330bf794cf3fa05591d03906915df98d157c
|
commit: 4f355bbac895d577d8a28f567ab4380f042ccc24
|
||||||
extra-dep: true
|
extra-dep: true
|
||||||
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
|
|
||||||
extra-deps: [ aeson-1.1.1.0
|
|
||||||
, managed-1.0.5
|
|
||||||
, swagger2-2.1.6
|
|
||||||
]
|
|
||||||
|
|
||||||
# Override default flag values for local packages and extra-deps
|
# Override default flag values for local packages and extra-deps
|
||||||
flags: {}
|
flags: {}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
module GeneratedTests where
|
module GeneratedTests where
|
||||||
|
|
||||||
import Test.Tasty
|
import Test.Tasty
|
||||||
import Test.Tasty.HUnit (testCase, (@?=))
|
import Test.Tasty.HUnit (assertEqual, testCase, (@?=))
|
||||||
|
|
||||||
import Data.String
|
import Data.String
|
||||||
import Proto3.Suite.DotProto.Generate
|
import Proto3.Suite.DotProto.Generate
|
||||||
|
@ -78,8 +78,8 @@ testClientGeneration = testCase "client generation" $ do
|
||||||
serverExitCode <- liftIO (wait serverExitCodeA)
|
serverExitCode <- liftIO (wait serverExitCodeA)
|
||||||
clientExitCode <- liftIO (wait clientExitCodeA)
|
clientExitCode <- liftIO (wait clientExitCodeA)
|
||||||
|
|
||||||
serverExitCode @?= ExitSuccess
|
assertEqual "Server exit code" serverExitCode ExitSuccess
|
||||||
clientExitCode @?= ExitSuccess
|
assertEqual "Client exit code" clientExitCode ExitSuccess
|
||||||
|
|
||||||
rmtree hsTmpDir
|
rmtree hsTmpDir
|
||||||
rmtree pyTmpDir
|
rmtree pyTmpDir
|
||||||
|
|
|
@ -31,7 +31,7 @@ import Proto3.Suite
|
||||||
import System.Random
|
import System.Random
|
||||||
|
|
||||||
import Test.Tasty
|
import Test.Tasty
|
||||||
import Test.Tasty.HUnit ((@?=), assertString, testCase)
|
import Test.Tasty.HUnit ((@?=), assertFailure, testCase)
|
||||||
|
|
||||||
testNormalCall client = testCase "Normal call" $
|
testNormalCall client = testCase "Normal call" $
|
||||||
do randoms <- fromList <$> replicateM 1000 (randomRIO (1, 1000))
|
do randoms <- fromList <$> replicateM 1000 (randomRIO (1, 1000))
|
||||||
|
@ -39,7 +39,7 @@ testNormalCall client = testCase "Normal call" $
|
||||||
res <- simpleServiceNormalCall client
|
res <- simpleServiceNormalCall client
|
||||||
(ClientNormalRequest req 10 mempty)
|
(ClientNormalRequest req 10 mempty)
|
||||||
case res of
|
case res of
|
||||||
ClientErrorResponse err -> assertString ("ClientErrorResponse: " <> show err)
|
ClientErrorResponse err -> assertFailure ("ClientErrorResponse: " <> show err)
|
||||||
ClientNormalResponse res _ _ stsCode _ ->
|
ClientNormalResponse res _ _ stsCode _ ->
|
||||||
do stsCode @?= StatusOk
|
do stsCode @?= StatusOk
|
||||||
simpleServiceResponseResponse res @?= "NormalRequest"
|
simpleServiceResponseResponse res @?= "NormalRequest"
|
||||||
|
@ -60,8 +60,8 @@ testClientStreamingCall client = testCase "Client-streaming call" $
|
||||||
|
|
||||||
(finalName, totalSum) <- readMVar v
|
(finalName, totalSum) <- readMVar v
|
||||||
case res of
|
case res of
|
||||||
ClientErrorResponse err -> assertString ("ClientErrorResponse: " <> show err)
|
ClientErrorResponse err -> assertFailure ("ClientErrorResponse: " <> show err)
|
||||||
ClientWriterResponse Nothing _ _ _ _ -> assertString "No response received"
|
ClientWriterResponse Nothing _ _ _ _ -> assertFailure "No response received"
|
||||||
ClientWriterResponse (Just res) _ _ stsCode _ ->
|
ClientWriterResponse (Just res) _ _ stsCode _ ->
|
||||||
do stsCode @?= StatusOk
|
do stsCode @?= StatusOk
|
||||||
simpleServiceResponseResponse res @?= finalName
|
simpleServiceResponseResponse res @?= finalName
|
||||||
|
@ -74,14 +74,14 @@ testServerStreamingCall client = testCase "Server-streaming call" $
|
||||||
let checkResults [] recv =
|
let checkResults [] recv =
|
||||||
do res <- recv
|
do res <- recv
|
||||||
case res of
|
case res of
|
||||||
Left err -> assertString ("recv error: " <> show err)
|
Left err -> assertFailure ("recv error: " <> show err)
|
||||||
Right Nothing -> pure ()
|
Right Nothing -> pure ()
|
||||||
Right (Just _) -> assertString "recv: elements past end of stream"
|
Right (Just _) -> assertFailure "recv: elements past end of stream"
|
||||||
checkResults (expNum:nums) recv =
|
checkResults (expNum:nums) recv =
|
||||||
do res <- recv
|
do res <- recv
|
||||||
case res of
|
case res of
|
||||||
Left err -> assertString ("recv error: " <> show err)
|
Left err -> assertFailure ("recv error: " <> show err)
|
||||||
Right Nothing -> assertString ("recv: stream ended earlier than expected")
|
Right Nothing -> assertFailure ("recv: stream ended earlier than expected")
|
||||||
Right (Just (SimpleServiceResponse response num)) ->
|
Right (Just (SimpleServiceResponse response num)) ->
|
||||||
do response @?= "Test"
|
do response @?= "Test"
|
||||||
num @?= expNum
|
num @?= expNum
|
||||||
|
@ -90,7 +90,7 @@ testServerStreamingCall client = testCase "Server-streaming call" $
|
||||||
ClientReaderRequest (SimpleServiceRequest "Test" (fromList nums)) 10 mempty
|
ClientReaderRequest (SimpleServiceRequest "Test" (fromList nums)) 10 mempty
|
||||||
(\_ -> checkResults nums)
|
(\_ -> checkResults nums)
|
||||||
case res of
|
case res of
|
||||||
ClientErrorResponse err -> assertString ("ClientErrorResponse: " <> show err)
|
ClientErrorResponse err -> assertFailure ("ClientErrorResponse: " <> show err)
|
||||||
ClientReaderResponse _ sts _ ->
|
ClientReaderResponse _ sts _ ->
|
||||||
sts @?= StatusOk
|
sts @?= StatusOk
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ testBiDiStreamingCall client = testCase "Bidi-streaming call" $
|
||||||
|
|
||||||
res <- recv
|
res <- recv
|
||||||
case res of
|
case res of
|
||||||
Left err -> assertString ("recv error: " <> show err)
|
Left err -> assertFailure ("recv error: " <> show err)
|
||||||
Right Nothing -> pure ()
|
Right Nothing -> pure ()
|
||||||
Right (Just (SimpleServiceResponse name total)) ->
|
Right (Just (SimpleServiceResponse name total)) ->
|
||||||
do name @?= testName
|
do name @?= testName
|
||||||
|
@ -116,7 +116,7 @@ testBiDiStreamingCall client = testCase "Bidi-streaming call" $
|
||||||
res <- simpleServiceBiDiStreamingCall client $
|
res <- simpleServiceBiDiStreamingCall client $
|
||||||
ClientBiDiRequest 10 mempty (\_ -> handleRequests iterations)
|
ClientBiDiRequest 10 mempty (\_ -> handleRequests iterations)
|
||||||
case res of
|
case res of
|
||||||
ClientErrorResponse err -> assertString ("ClientErrorResponse: " <> show err)
|
ClientErrorResponse err -> assertFailure ("ClientErrorResponse: " <> show err)
|
||||||
ClientBiDiResponse _ sts _ ->
|
ClientBiDiResponse _ sts _ ->
|
||||||
sts @?= StatusOk
|
sts @?= StatusOk
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
from simple_pb2 import *
|
from simple_pb2 import *
|
||||||
|
from simple_pb2_grpc import *
|
||||||
|
import grpc
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
import random
|
import random
|
||||||
import Queue
|
import Queue
|
||||||
|
|
||||||
print "Starting python client"
|
print "Starting python client"
|
||||||
|
|
||||||
channel = beta_implementations.insecure_channel('localhost', 50051)
|
channel = grpc.insecure_channel('localhost:50051')
|
||||||
stub = beta_create_SimpleService_stub(channel)
|
stub = SimpleServiceStub(channel)
|
||||||
|
|
||||||
def runTests():
|
def runTests():
|
||||||
# Test normal call: return a sum of all numbers sent to it
|
# Test normal call: return a sum of all numbers sent to it
|
||||||
|
@ -14,7 +16,7 @@ def runTests():
|
||||||
for i in xrange(100):
|
for i in xrange(100):
|
||||||
randints = [random.randint(0, 1000) for _ in xrange(random.randint(10, 1000))]
|
randints = [random.randint(0, 1000) for _ in xrange(random.randint(10, 1000))]
|
||||||
name = "test%d" % i
|
name = "test%d" % i
|
||||||
response = stub.normalCall(SimpleServiceRequest(request = name, num = randints), 10)
|
response = stub.normalCall(SimpleServiceRequest(request = name, num = randints), timeout = 10)
|
||||||
assert response.response == name
|
assert response.response == name
|
||||||
assert response.num == sum(randints)
|
assert response.num == sum(randints)
|
||||||
|
|
||||||
|
@ -31,7 +33,7 @@ def runTests():
|
||||||
esum[0] += sum(nums)
|
esum[0] += sum(nums)
|
||||||
ename[0] += name
|
ename[0] += name
|
||||||
yield SimpleServiceRequest(request = name, num = nums)
|
yield SimpleServiceRequest(request = name, num = nums)
|
||||||
response = stub.clientStreamingCall(send_requests(expected_sum, expected_response_name), 10)
|
response = stub.clientStreamingCall(send_requests(expected_sum, expected_response_name), timeout = 10)
|
||||||
assert response.response == expected_response_name[0]
|
assert response.response == expected_response_name[0]
|
||||||
assert response.num == expected_sum[0]
|
assert response.num == expected_sum[0]
|
||||||
|
|
||||||
|
@ -40,7 +42,7 @@ def runTests():
|
||||||
for i in xrange(100):
|
for i in xrange(100):
|
||||||
nums = [random.randint(0, 1000) for _ in xrange(random.randint(0, 1000))]
|
nums = [random.randint(0, 1000) for _ in xrange(random.randint(0, 1000))]
|
||||||
|
|
||||||
for response in stub.serverStreamingCall(SimpleServiceRequest(request = "server streaming", num = nums), 60):
|
for response in stub.serverStreamingCall(SimpleServiceRequest(request = "server streaming", num = nums), timeout = 60):
|
||||||
assert response.num == nums[0]
|
assert response.num == nums[0]
|
||||||
assert response.response == "server streaming"
|
assert response.response == "server streaming"
|
||||||
nums = nums[1:]
|
nums = nums[1:]
|
||||||
|
@ -58,14 +60,14 @@ def runTests():
|
||||||
|
|
||||||
yield SimpleServiceRequest(request = name, num = nums)
|
yield SimpleServiceRequest(request = name, num = nums)
|
||||||
|
|
||||||
for response in stub.biDiStreamingCall(send_requests(), 10):
|
for response in stub.biDiStreamingCall(send_requests(), timeout = 10):
|
||||||
(exp_name, exp_sum) = requests.get()
|
(exp_name, exp_sum) = requests.get()
|
||||||
|
|
||||||
assert response.response == exp_name
|
assert response.response == exp_name
|
||||||
assert response.num == exp_sum
|
assert response.num == exp_sum
|
||||||
|
|
||||||
print "Sending DONE message to server"
|
print "Sending DONE message to server"
|
||||||
stub.done(SimpleServiceDone(), 10)
|
stub.done(SimpleServiceDone(), timeout = 10)
|
||||||
|
|
||||||
print "All python client tests against the generated server were successful"
|
print "All python client tests against the generated server were successful"
|
||||||
|
|
||||||
|
@ -76,6 +78,6 @@ except Exception as e:
|
||||||
print e.__doc__
|
print e.__doc__
|
||||||
print e.message
|
print e.message
|
||||||
print "Sending DONE message to server before exiting"
|
print "Sending DONE message to server before exiting"
|
||||||
stub.done(SimpleServiceDone(), 10)
|
stub.done(SimpleServiceDone(), timeout = 10)
|
||||||
print "Exiting with failure status"
|
print "Exiting with failure status"
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from simple_pb2 import *
|
from simple_pb2 import *
|
||||||
|
import simple_pb2_grpc
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
from concurrent import futures
|
||||||
import random
|
import random
|
||||||
import Queue
|
import Queue
|
||||||
import grpc
|
import grpc
|
||||||
|
@ -8,7 +10,7 @@ print "Starting python server"
|
||||||
|
|
||||||
done_queue = Queue.Queue()
|
done_queue = Queue.Queue()
|
||||||
|
|
||||||
class SimpleServiceServer(BetaSimpleServiceServicer):
|
class SimpleServiceServer(simple_pb2_grpc.SimpleServiceServicer):
|
||||||
def done(self, request, context):
|
def done(self, request, context):
|
||||||
global server
|
global server
|
||||||
done_queue.put_nowait(())
|
done_queue.put_nowait(())
|
||||||
|
@ -34,7 +36,8 @@ class SimpleServiceServer(BetaSimpleServiceServicer):
|
||||||
for request in requests:
|
for request in requests:
|
||||||
yield SimpleServiceResponse(response = request.request, num = sum(request.num))
|
yield SimpleServiceResponse(response = request.request, num = sum(request.num))
|
||||||
|
|
||||||
server = beta_create_SimpleService_server(SimpleServiceServer())
|
server = grpc.server(futures.ThreadPoolExecutor(max_workers=1))
|
||||||
|
simple_pb2_grpc.add_SimpleServiceServicer_to_server(SimpleServiceServer(), server)
|
||||||
server.add_insecure_port('[::]:50051')
|
server.add_insecure_port('[::]:50051')
|
||||||
server.start()
|
server.start()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue