All Downloads are FREE. Search and download functionalities are using the official Maven repository.

angch.venice.1.12.27.source-code.test-geoip-country-lookup.venice Maven / Gradle / Ivy

There is a newer version: 1.12.34
Show newest version
;;;;   __    __         _
;;;;   \ \  / /__ _ __ (_) ___ ___
;;;;    \ \/ / _ \ '_ \| |/ __/ _ \
;;;;     \  /  __/ | | | | (_|  __/
;;;;      \/ \___|_| |_|_|\___\___|
;;;;
;;;;
;;;; Copyright 2017-2024 Venice
;;;;
;;;; Licensed under the Apache License, Version 2.0 (the "License");
;;;; you may not use this file except in compliance with the License.
;;;; You may obtain a copy of the License at
;;;;
;;;;     http://www.apache.org/licenses/LICENSE-2.0
;;;;
;;;; Unless required by applicable law or agreed to in writing, software
;;;; distributed under the License is distributed on an "AS IS" BASIS,
;;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;;;; See the License for the specific language governing permissions and
;;;; limitations under the License.

(do
  (ns test)

  (load-module :geoip)

  ;; The MaxMind country database.
  (def maxmind-country-zip "resources/geoip-country.zip")

  (def ip-addresses-file "resources/ip-addresses.txt")

  (defn create-resolver []
    ; this may take some time
    (println "Parsing MaxMind DB ...")
    (geoip/ip-to-country-resolver maxmind-country-zip))

  (defn load-ip-addresses []
    (->> (io/slurp ip-addresses-file :binary false)
         (str/split-lines)))

  (def resolver (create-resolver))

  (def ip-addresses (load-ip-addresses))

  (defn lookup-ip [ip]
    (resolver ip))

  (defn process [ip-addresses]
    (map resolver ip-addresses)
    nil)

  (defn run []
    (process ip-addresses))

  (defn run-parallel []
    (let [data    (flatten (repeat 10 ip-addresses))
          threads (max 1 (/ (cpus) 2))
          work    (partition threads threads [] data)
          futures (map #(future (partial process %)) work)]
      (map deref futures)
      nil))

  ; Performance:  calling function 'test/process' with 974 IP addresses
  ;               Activate macroexpansion in the REPL to run the tests!
  ;
  ;               Venice  threads  time per IP  perf test
  ;               ------  -------  -----------  --------------------------
  ;               1.8.13     1        1.1us     (perf (test/run) 4000 1000)

  ; (test/lookup-ip "41.216.186.131")

  ; (perf (test/run) 4000 100)
  ; (println (prof :data-formatted :anon-fn))
)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy