summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/farside/application.ex32
-rw-r--r--lib/farside/instances.ex33
-rw-r--r--lib/farside/server.ex2
3 files changed, 42 insertions, 25 deletions
diff --git a/lib/farside/application.ex b/lib/farside/application.ex
index 7427e89..8ccdc58 100644
--- a/lib/farside/application.ex
+++ b/lib/farside/application.ex
@@ -7,23 +7,25 @@ defmodule Farside.Application do
@impl true
def start(_type, _args) do
-
- plug_children = System.get_env("FARSIDE_NO_ROUTER") && [] || [
- Plug.Cowboy.child_spec(
- scheme: :http,
- plug: Farside.Router,
- options: [
- port: @farside_port
+ plug_children =
+ (System.get_env("FARSIDE_NO_ROUTER") && []) ||
+ [
+ Plug.Cowboy.child_spec(
+ scheme: :http,
+ plug: Farside.Router,
+ options: [
+ port: @farside_port
+ ]
+ ),
+ {PlugAttack.Storage.Ets, name: Farside.Throttle.Storage, clean_period: 60_000}
]
- ),
- {PlugAttack.Storage.Ets, name: Farside.Throttle.Storage, clean_period: 60_000}
- ]
- children = [
- {Redix, {@redis_conn, [name: :redix]}},
- Farside.Scheduler,
- Farside.Server
- ] ++ plug_children
+ children =
+ [
+ {Redix, {@redis_conn, [name: :redix]}},
+ Farside.Scheduler,
+ Farside.Server
+ ] ++ plug_children
opts = [strategy: :one_for_one, name: Farside.Supervisor]
Supervisor.start_link(children, opts)
diff --git a/lib/farside/instances.ex b/lib/farside/instances.ex
index a451026..c8e7611 100644
--- a/lib/farside/instances.ex
+++ b/lib/farside/instances.ex
@@ -4,6 +4,7 @@ defmodule Farside.Instances do
@services_json Application.fetch_env!(:farside, :services_json)
@service_prefix Application.fetch_env!(:farside, :service_prefix)
@headers Application.fetch_env!(:farside, :headers)
+ @queries Application.fetch_env!(:farside, :queries)
def sync() do
File.rename(@update_file, "#{@update_file}-prev")
@@ -21,11 +22,13 @@ defmodule Farside.Instances do
cond do
System.get_env("FARSIDE_TEST") ->
:good
+
true ->
case HTTPoison.get(url, @headers) do
{:ok, %HTTPoison.Response{status_code: 200}} ->
# TODO: Add validation of results, not just status code
:good
+
_ ->
:bad
end
@@ -38,11 +41,20 @@ defmodule Farside.Instances do
# Loop through all instances and check each for availability
for service <- json do
- IO.puts "======== " <> service.type
- result = Enum.filter(service.instances, fn(instance_url) ->
- IO.puts " " <> instance_url
- request(instance_url <> service.test_url) == :good
- end)
+ IO.puts("======== " <> service.type)
+
+ result =
+ Enum.filter(service.instances, fn instance_url ->
+ request_url = instance_url <>
+ EEx.eval_string(
+ service.test_url,
+ query: Enum.random(@queries)
+ )
+
+ IO.puts(" " <> request_url)
+
+ request(request_url) == :good
+ end)
add_to_redis(service, result)
log_results(service.type, result)
@@ -57,10 +69,13 @@ defmodule Farside.Instances do
])
# Update with new list of available instances
- Redix.command(:redix, [
- "LPUSH",
- "#{@service_prefix}#{service.type}"
- ] ++ instances)
+ Redix.command(
+ :redix,
+ [
+ "LPUSH",
+ "#{@service_prefix}#{service.type}"
+ ] ++ instances
+ )
# Set fallback to one of the available instances,
# or the default instance if all are "down"
diff --git a/lib/farside/server.ex b/lib/farside/server.ex
index 1d5bb76..61aff40 100644
--- a/lib/farside/server.ex
+++ b/lib/farside/server.ex
@@ -13,7 +13,7 @@ defmodule Farside.Server do
Farside.Scheduler.new_job()
|> Quantum.Job.set_name(:sync)
|> Quantum.Job.set_schedule(~e[*/5 * * * *])
- |> Quantum.Job.set_task(fn -> Farside.Instances.sync end)
+ |> Quantum.Job.set_task(fn -> Farside.Instances.sync() end)
|> Farside.Scheduler.add_job()
end