about summary refs log tree commit diff
diff options
context:
space:
mode:
authorillustris <rharikrishnan95@gmail.com>2022-03-29 01:49:17 +0530
committerillustris <rharikrishnan95@gmail.com>2022-04-18 02:02:43 +0530
commit2b0c299990e4d2c392e2041240bb05797f23c146 (patch)
tree3cfdbec3c380a1ecbad3fd6137d04643811d8f9e
parent6701dd6a4dd5b91314a7ea8890620c7b16a0e058 (diff)
hbase: 0.98.24 -> 2.4.11
-rw-r--r--nixos/tests/all-tests.nix3
-rw-r--r--nixos/tests/hbase.nix30
-rw-r--r--pkgs/servers/hbase/default.nix69
-rw-r--r--pkgs/top-level/all-packages.nix6
4 files changed, 89 insertions, 19 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index cb68ef685300e..9848487fd1347 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -199,6 +199,9 @@ in
   haste-server = handleTest ./haste-server.nix {};
   haproxy = handleTest ./haproxy.nix {};
   hardened = handleTest ./hardened.nix {};
+  hbase1 = handleTest ./hbase.nix { package=pkgs.hbase1; };
+  hbase2 = handleTest ./hbase.nix { package=pkgs.hbase2; };
+  hbase3 = handleTest ./hbase.nix { package=pkgs.hbase3; };
   hedgedoc = handleTest ./hedgedoc.nix {};
   herbstluftwm = handleTest ./herbstluftwm.nix {};
   installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
diff --git a/nixos/tests/hbase.nix b/nixos/tests/hbase.nix
new file mode 100644
index 0000000000000..a449d24dd6fd8
--- /dev/null
+++ b/nixos/tests/hbase.nix
@@ -0,0 +1,30 @@
+import ./make-test-python.nix ({ pkgs, lib, package ? pkgs.hbase, ... }:
+{
+  name = "hbase";
+
+  meta = with lib.maintainers; {
+    maintainers = [ illustris ];
+  };
+
+  nodes = {
+    hbase = { pkgs, ... }: {
+      services.hbase = {
+        enable = true;
+        inherit package;
+        # Needed for standalone mode in hbase 2+
+        # This setting and standalone mode are not suitable for production
+        settings."hbase.unsafe.stream.capability.enforce" = "false";
+      };
+      environment.systemPackages = with pkgs; [
+        package
+      ];
+    };
+  };
+
+  testScript = ''
+    start_all()
+    hbase.wait_for_unit("hbase.service")
+    hbase.wait_until_succeeds("echo \"create 't1','f1'\" | sudo -u hbase hbase shell -n")
+    assert "NAME => 'f1'" in hbase.succeed("echo \"describe 't1'\" | sudo -u hbase hbase shell -n")
+  '';
+})
diff --git a/pkgs/servers/hbase/default.nix b/pkgs/servers/hbase/default.nix
index 32d2c09de97fb..46521da885390 100644
--- a/pkgs/servers/hbase/default.nix
+++ b/pkgs/servers/hbase/default.nix
@@ -1,22 +1,55 @@
-{ lib, stdenv, fetchurl, makeWrapper }:
-stdenv.mkDerivation rec {
-  pname = "hbase";
-  version = "0.98.24";
+{ lib
+, stdenv
+, fetchurl
+, makeWrapper
+, jdk8_headless
+, jdk11_headless
+, nixosTests
+}:
 
-  src = fetchurl {
-    url = "mirror://apache/hbase/${version}/hbase-${version}-hadoop2-bin.tar.gz";
-    sha256 = "0kz72wqsii09v9hxkw10mzyvjhji5sx3l6aijjalgbybavpcxglb";
-  };
+let common = { version, hash, jdk ? jdk11_headless, tests }:
+  stdenv.mkDerivation rec {
+    pname = "hbase";
+    inherit version;
+
+    src = fetchurl {
+      url = "mirror://apache/hbase/${version}/hbase-${version}-bin.tar.gz";
+      inherit hash;
+    };
+
+    nativeBuildInputs = [ makeWrapper ];
+    installPhase = ''
+      mkdir -p $out
+      cp -R * $out
+      wrapProgram $out/bin/hbase --set-default JAVA_HOME ${jdk.home}
+    '';
+
+    passthru = { inherit tests; };
 
-  nativeBuildInputs = [ makeWrapper ];
-  installPhase = ''
-    mkdir -p $out
-    cp -R * $out
-  '';
-  meta = with lib; {
-    description = "A distributed, scalable, big data store";
-    homepage = "https://hbase.apache.org";
-    license = licenses.asl20;
-    platforms = lib.platforms.linux;
+    meta = with lib; {
+      description = "A distributed, scalable, big data store";
+      homepage = "https://hbase.apache.org";
+      license = licenses.asl20;
+      maintainers = with lib.maintainers; [ illustris ];
+      platforms = lib.platforms.linux;
+    };
+  };
+in
+{
+  hbase_1_7 = common {
+    version = "1.7.1";
+    hash = "sha256-DrH2G79QLT8L0YTTmAGC9pUWU8semSaTOsrsQRCI2rY=";
+    jdk = jdk8_headless;
+    tests.standalone = nixosTests.hbase1;
+  };
+  hbase_2_4 = common {
+    version = "2.4.11";
+    hash = "sha256-m0vjUtPaj8czHHh+rQNJJgrFAM744cHd06KE0ut7QeU=";
+    tests.standalone = nixosTests.hbase2;
+  };
+  hbase_3_0 = common {
+    version = "3.0.0-alpha-2";
+    hash = "sha256-QPvgO1BeFWvMT5PdUm/SL92ZgvSvYIuJbzolbBTenz4=";
+    tests.standalone = nixosTests.hbase3;
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7d3d71538c88b..8528b5b07caa3 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -21414,7 +21414,11 @@ with pkgs;
 
   hasura-cli = callPackage ../servers/hasura/cli.nix { };
 
-  hbase = callPackage ../servers/hbase {};
+  inherit (callPackage ../servers/hbase {}) hbase_1_7 hbase_2_4 hbase_3_0;
+  hbase1 = hbase_1_7;
+  hbase2 = hbase_2_4;
+  hbase3 = hbase_3_0;
+  hbase = hbase2; # when updating, point to the latest stable release
 
   headphones = callPackage ../servers/headphones {};