Simplier binary downloader

This commit is contained in:
alesapin 2021-04-04 12:21:44 +03:00
parent 75cd37f359
commit 71754a44eb
3 changed files with 29 additions and 5 deletions

View File

@ -16,3 +16,5 @@
(def coordination-logs-dir (str coordination-data-dir "/logs"))
(def stderr-file (str logs-dir "/stderr.log"))
(def binaries-cache-dir (str common-prefix "/binaries"))

View File

@ -17,9 +17,7 @@
(defn get-clickhouse-url
[url]
(let [download-result (cu/wget! url)]
(do (c/exec :mv download-result common-prefix)
(str common-prefix "/" download-result))))
(non-precise-cached-wget! url))
(defn download-clickhouse
[source]
@ -49,6 +47,7 @@
(defn chmod-binary
[path]
(info "Binary path chmod" path)
(c/exec :chmod :+x path))
(defn install-downloaded-clickhouse

View File

@ -6,11 +6,13 @@
[jepsen.control.util :as cu]
[jepsen.clickhouse-keeper.constants :refer :all]
[jepsen.control :as c]
[clojure.tools.logging :refer :all])
[clojure.tools.logging :refer :all]
[clojure.java.io :as io])
(:import (org.apache.zookeeper.data Stat)
(org.apache.zookeeper CreateMode
ZooKeeper)
(org.apache.zookeeper ZooKeeper KeeperException KeeperException$BadVersionException)))
(org.apache.zookeeper ZooKeeper KeeperException KeeperException$BadVersionException)
(java.security MessageDigest)))
(defn exec-with-retries
[retries f & args]
@ -178,3 +180,24 @@
:--keeper_server.snapshot_storage_path coordination-snapshots-dir
:--keeper_server.logs_storage_path coordination-logs-dir)
(wait-clickhouse-alive! node test)))
(defn md5 [^String s]
(let [algorithm (MessageDigest/getInstance "MD5")
raw (.digest algorithm (.getBytes s))]
(format "%032x" (BigInteger. 1 raw))))
(defn non-precise-cached-wget!
[url]
(let [encoded-url (md5 url)
expected-file-name (.getName (io/file url))
dest-file (str binaries-cache-dir "/" encoded-url)
dest-symlink (str common-prefix "/" expected-file-name)
wget-opts (concat cu/std-wget-opts [:-O dest-file])]
(when-not (cu/exists? dest-file)
(info "Downloading" url)
(do (c/exec :mkdir :-p binaries-cache-dir)
(c/cd binaries-cache-dir
(cu/wget-helper! wget-opts url))))
(c/exec :rm :-rf dest-symlink)
(c/exec :ln :-s dest-file dest-symlink)
dest-symlink))