Skip to content

Commit

Permalink
Merge pull request #80 from DiodonHystrix/maintenance/add-formatter
Browse files Browse the repository at this point in the history
Add formatter
  • Loading branch information
edgurgel authored Apr 12, 2019
2 parents 1c81e83 + 43dc6be commit 2c622f5
Show file tree
Hide file tree
Showing 42 changed files with 365 additions and 231 deletions.
4 changes: 4 additions & 0 deletions .formatter.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Used by "mix format"
[
inputs: ["{mix,.formatter}.exs", "{config,lib,test,web}/**/*.{ex,exs}"]
]
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ elixir:
otp_release:
- 21.0
script:
- if [[ `elixir -v` = *"1.7"* ]]; then mix format --check-formatted; fi
- MIX_ENV=test mix test --trace --cover
services:
- redis-server
Expand Down
5 changes: 2 additions & 3 deletions config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ config :verk_web, VerkWeb.Endpoint,
url: [host: "localhost"],
root: Path.dirname(__DIR__),
render_errors: [accepts: ~w(html json)],
pubsub: [name: VerkWeb.PubSub,
adapter: Phoenix.PubSub.PG2]
pubsub: [name: VerkWeb.PubSub, adapter: Phoenix.PubSub.PG2]

# Configures Elixir's Logger
config :logger, :console,
Expand All @@ -22,4 +21,4 @@ config :phoenix, :json_library, Jason

# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env}.exs"
import_config "#{Mix.env()}.exs"
3 changes: 2 additions & 1 deletion config/dev.exs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ config :verk_web, VerkWeb.Endpoint,

# config :logger, backends: [] # Silent logging for tests

config :verk, queues: [default: 25, priority: 10],
config :verk,
queues: [default: 25, priority: 10],
poll_interval: 5000,
node_id: "1",
redis_url: "redis://127.0.0.1:6379"
Expand Down
12 changes: 7 additions & 5 deletions lib/verk_web.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ defmodule VerkWeb do
import Supervisor.Spec, warn: false

children = [supervisor(VerkWeb.Endpoint, [])]
children = if Application.get_env(:verk_web, :link_verk_supervisor, false) do
[supervisor(Verk.Supervisor, []) | children]
else
children
end

children =
if Application.get_env(:verk_web, :link_verk_supervisor, false) do
[supervisor(Verk.Supervisor, []) | children]
else
children
end

:ets.new(:verk_web_session, [:named_table, :public, read_concurrency: true])
opts = [strategy: :one_for_one, name: VerkWeb.Supervisor]
Expand Down
34 changes: 20 additions & 14 deletions lib/verk_web/endpoint.ex
Original file line number Diff line number Diff line change
@@ -1,44 +1,50 @@
defmodule VerkWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :verk_web

socket "/socket", VerkWeb.UserSocket
socket("/socket", VerkWeb.UserSocket)

# Serve at "/" the static files from "priv/static" directory.
#
# You should set gzip to true if you are running phoenix.digest
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :verk_web, gzip: false,
plug(Plug.Static,
at: "/",
from: :verk_web,
gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt)
)

# Code reloading can be explicitly enabled under the
# :code_reloader configuration of your endpoint.
if code_reloading? do
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader
plug Phoenix.CodeReloader
socket("/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket)
plug(Phoenix.LiveReloader)
plug(Phoenix.CodeReloader)
end

plug Plug.RequestId
plug Plug.Logger
plug(Plug.RequestId)
plug(Plug.Logger)

plug Plug.Parsers,
plug(Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Jason
)

plug Plug.MethodOverride
plug Plug.Head
plug(Plug.MethodOverride)
plug(Plug.Head)

plug Plug.Session,
plug(Plug.Session,
store: :ets,
key: "verk_web_sid",
table: :verk_web_session
)

auth_options = Application.get_env(:verk_web, :authorization)

if auth_options do
plug BasicAuth, use_config: {:verk_web, :authorization}
plug(BasicAuth, use_config: {:verk_web, :authorization})
end

plug VerkWeb.Router
plug(VerkWeb.Router)
end
16 changes: 8 additions & 8 deletions lib/verk_web/range_paginator.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,25 @@ defmodule VerkWeb.RangePaginator do
defstruct [:page, :per_page, :from, :to, :has_next, :has_prev]

def new(total_entries, page \\ 1, per_page \\ 20) do
page = to_int(page, 1)
page = to_int(page, 1)
per_page = to_int(per_page, 20)

from = if page > 1, do: (page - 1) * per_page, else: 0
to = if page > 1, do: (from + per_page) - 1, else: per_page - 1
from = if page > 1, do: (page - 1) * per_page, else: 0
to = if page > 1, do: from + per_page - 1, else: per_page - 1
has_next = total_entries - 1 > to
has_prev = page > 1

%VerkWeb.RangePaginator{
page: page,
page: page,
per_page: per_page,
from: from,
to: to,
from: from,
to: to,
has_next: has_next,
has_prev: has_prev
}
end

defp to_int(nil, default), do: default
defp to_int(nil, default), do: default
defp to_int(page, _) when is_integer(page), do: page
defp to_int(page, _), do: Integer.parse(page) |> elem(0)
defp to_int(page, _), do: Integer.parse(page) |> elem(0)
end
7 changes: 5 additions & 2 deletions lib/verk_web/tracking_jobs_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,25 @@ defmodule VerkWeb.TrackingJobsHandler do
end

def handle_events(events, _from, {pid, stats}) do
stats = Enum.reduce(events, stats, &(handle_event(&1, &2)))
stats = Enum.reduce(events, stats, &handle_event(&1, &2))
{:noreply, [], {pid, stats}}
end

defp handle_event(%Verk.Events.JobFinished{}, stats) do
%{finished: stats[:finished] + 1, failed: stats[:failed]}
end

defp handle_event(%Verk.Events.JobFailed{}, stats) do
%{finished: stats[:finished], failed: stats[:failed] + 1}
end

defp handle_event(_, stats), do: stats

def handle_info(:broadcast_stats, {pid, stats}) do
send pid, {:stats, stats}
send(pid, {:stats, stats})
Process.send_after(self(), :broadcast_stats, @broadcast_interval)
{:noreply, [], {pid, %{finished: 0, failed: 0}}}
end

def handle_info(_, state), do: {:noreply, [], state}
end
9 changes: 6 additions & 3 deletions lib/verk_web/tracking_queues_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@ defmodule VerkWeb.TrackingQueuesHandler do
end

defp handle_event(%Verk.Events.QueueRunning{} = event, pid) do
send pid, {:queue_status, %{queue: event.queue, status: "running"}}
send(pid, {:queue_status, %{queue: event.queue, status: "running"}})
end

defp handle_event(%Verk.Events.QueuePausing{} = event, pid) do
send pid, {:queue_status, %{queue: event.queue, status: "pausing"}}
send(pid, {:queue_status, %{queue: event.queue, status: "pausing"}})
end

defp handle_event(%Verk.Events.QueuePaused{} = event, pid) do
send pid, {:queue_status, %{queue: event.queue, status: "paused"}}
send(pid, {:queue_status, %{queue: event.queue, status: "paused"}})
end

defp handle_event(_, _), do: :ok
end
95 changes: 58 additions & 37 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,75 @@ defmodule VerkWeb.Mixfile do
"""

def project do
[app: :verk_web,
version: "1.5.0",
elixir: "~> 1.6",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
test_coverage: [tool: Coverex.Task, coveralls: true],
name: "Verk Web",
description: @description,
package: package(),
deps: deps()]
[
app: :verk_web,
version: "1.5.0",
elixir: "~> 1.6",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
build_embedded: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
test_coverage: [tool: Coverex.Task, coveralls: true],
name: "Verk Web",
description: @description,
package: package(),
deps: deps()
]
end

@default_config [http: [port: 4000], server: false,
pubsub: [name: VerkWeb.PubSub, adapter: Phoenix.PubSub.PG2]]
@default_config [
http: [port: 4000],
server: false,
pubsub: [name: VerkWeb.PubSub, adapter: Phoenix.PubSub.PG2]
]

def application do
[mod: {VerkWeb, []},
env: [{VerkWeb.Endpoint, @default_config}],
applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext, :verk, :timex, :basic_auth]]
[
mod: {VerkWeb, []},
env: [{VerkWeb.Endpoint, @default_config}],
applications: [
:phoenix,
:phoenix_pubsub,
:phoenix_html,
:cowboy,
:logger,
:gettext,
:verk,
:timex,
:basic_auth
]
]
end

defp elixirc_paths(:test), do: ["lib", "web", "test/support"]
defp elixirc_paths(_), do: ["lib", "web"]
defp elixirc_paths(_), do: ["lib", "web"]

defp deps do
[{:phoenix, "~> 1.4.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_html, "~> 2.6"},
{:gettext, "~> 0.16"},
{:verk, "~> 1.1"},
{:plug_cowboy, "~> 2.0"},
{:plug, "~> 1.7"},
{:basic_auth, "~> 2.0"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:earmark, "~> 1.0", only: :dev},
{:ex_doc, "~> 0.13", only: :dev},
{:coverex, "~> 1.4", only: :test},
{:meck, "~> 0.8", only: :test},
{:timex, "~> 3.3.0"},
{:jason, "~> 1.1"}]
[
{:phoenix, "~> 1.4.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_html, "~> 2.6"},
{:gettext, "~> 0.16"},
{:verk, "~> 1.1"},
{:plug_cowboy, "~> 2.0"},
{:plug, "~> 1.7"},
{:basic_auth, "~> 2.0"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:earmark, "~> 1.0", only: :dev},
{:ex_doc, "~> 0.13", only: :dev},
{:coverex, "~> 1.4", only: :test},
{:meck, "~> 0.8", only: :test},
{:timex, "~> 3.3.0"},
{:jason, "~> 1.1"}
]
end

defp package do
[maintainers: ["Eduardo Gurgel Pinho", "Alisson Sales"],
licenses: ["MIT"],
links: %{"Github" => "https://github.com/edgurgel/verk_web"},
files: ["lib", "web", "priv", "mix.exs", "README*", "LICENSE*"]]
[
maintainers: ["Eduardo Gurgel Pinho", "Alisson Sales"],
licenses: ["MIT"],
links: %{"Github" => "https://github.com/edgurgel/verk_web"},
files: ["lib", "web", "priv", "mix.exs", "README*", "LICENSE*"]
]
end
end
6 changes: 3 additions & 3 deletions test/controllers/dead_controllers_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ defmodule VerkWeb.DeadControllerTest do
use VerkWeb.ConnCase

setup do
on_exit fn -> :meck.unload end
on_exit(fn -> :meck.unload() end)
:ok
end

test "DELETE / jobs delete expecific jobs", %{conn: conn} do
fake_job_json = "{\"jid\": \"123\"}"
:meck.expect(Verk.DeadSet, :delete_job, [fake_job_json], :ok)
delete conn, "/dead", jobs_to_delete: [fake_job_json]
delete(conn, "/dead", jobs_to_delete: [fake_job_json])
end

test "DELETE / passing no jobs deletes all jobs", %{conn: conn} do
:meck.expect(Verk.DeadSet, :clear, 0, :ok)
delete conn, "/dead"
delete(conn, "/dead")
end
end
2 changes: 1 addition & 1 deletion test/controllers/page_controller_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule VerkWeb.PageControllerTest do
use VerkWeb.ConnCase

test "GET /", %{conn: conn} do
conn = get conn, "/"
conn = get(conn, "/")
assert html_response(conn, 200)
end
end
Loading

0 comments on commit 2c622f5

Please sign in to comment.