Skip to content

Commit f78e190

Browse files
committed
[GH-#69] GET /info, project cleanup
1 parent c254ea7 commit f78e190

30 files changed

+52
-1824
lines changed

apps/aecore/lib/aecore/peers/worker.ex

+22-14
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
defmodule Aecore.Peers.Worker do
2+
@moduledoc """
3+
Peer manager module
4+
"""
5+
6+
use GenServer
27

38
alias Aehttpclient.Client
49
alias Aecore.Structures.Block
510
alias Aecore.Utils.Blockchain.BlockValidation
611

7-
use GenServer
8-
912
def start_link do
1013
GenServer.start_link(__MODULE__, [], name: __MODULE__)
1114
end
@@ -16,7 +19,7 @@ defmodule Aecore.Peers.Worker do
1619

1720
@spec add_peer(term) :: :ok | :error
1821
def add_peer(uri) do
19-
GenServer.call(__MODULE__, {:add_peer, uri})
22+
GenServer.call(__MODULE__, {:add_peer, uri},15000)
2023
end
2124

2225
@spec remove_peer(term) :: :ok | :error
@@ -42,30 +45,35 @@ defmodule Aecore.Peers.Worker do
4245
end
4346

4447
def handle_call({:add_peer,uri}, _from, peers) do
45-
case(Client.get_info(uri)) do
46-
{:ok, info} ->
47-
if(Map.get(info,"genesis_block_hash") == genesis_block_header_hash()) do
48-
{:reply, :ok, [uri | peers]}
49-
else
48+
if(!Enum.member?(peers,uri)) do
49+
case(Client.get_info(uri)) do
50+
{:ok, info} ->
51+
if(Map.get(info,"genesis_block_hash") == genesis_block_header_hash()) do
52+
{:reply, :ok, [uri | peers]}
53+
else
54+
{:reply, {:error, "Genesis header hash not valid"}, peers}
55+
end
56+
:error ->
5057
{:reply, :error, peers}
51-
end
52-
:error ->
53-
{:reply, :error, peers}
58+
end
59+
else
60+
{:reply, {:error, "Peer already in list"}, peers}
5461
end
5562
end
5663

5764
def handle_call({:remove_peer, uri}, _from, peers) do
5865
if(Enum.member?(peers,uri)) do
5966
{:reply, :ok, List.delete(peers, uri)}
6067
else
61-
{:reply, :error, peers}
68+
{:reply, {:error, "Peer not found"}, peers}
6269
end
6370
end
6471

6572
def handle_call(:check_peers, _from, peers) do
6673
updated_peers = Enum.filter(peers, fn(peer) ->
67-
{status, _} = Client.get_info(peer)
68-
:ok = status
74+
{status, info} = Client.get_info(peer)
75+
:ok == status &&
76+
Map.get(info,"genesis_block_hash") == genesis_block_header_hash()
6977
end)
7078
{:reply, :ok, updated_peers}
7179
end
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
defmodule AecorePeersTest do
2+
3+
use ExUnit.Case
4+
5+
alias Aecore.Peers.Worker, as: Peers
6+
7+
setup do
8+
Peers.start_link()
9+
[]
10+
end
11+
12+
test "add peer, get all peers, check peers and remove the peer" do
13+
assert :ok = Peers.add_peer("localhost:4000")
14+
assert {:error, "Peer already in list"} = Peers.add_peer("localhost:4000")
15+
assert Enum.count(Peers.all_peers) == 1
16+
assert :ok = Peers.check_peers
17+
assert :ok = Peers.remove_peer("localhost:4000")
18+
assert {:error, "Peer not found"} = Peers.remove_peer("localhost:4001")
19+
end
20+
21+
end

apps/aehttpclient/lib/client.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule Aehttpclient.Client do
22

33
def get_info(uri) do
4-
case(HTTPoison.get(uri <> "/info",[recv_timeout: 10000000])) do
4+
case(HTTPoison.get(uri <> "/info")) do
55
{:ok, %{body: body, status_code: 200}} ->
66
response = Poison.decode!(body)
77
{:ok, response}

apps/aehttpserver/config/config.exs

-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ use Mix.Config
77

88
# Configures the endpoint
99
config :aehttpserver, Aehttpserver.Endpoint,
10-
url: [host: "localhost"],
11-
secret_key_base: "5OCr9Ljxr0s8cSx36fmjKgi6hWETJeoxH+jMvBSNDCO/pt0Zqo1S0+EGGJ2VyOoa",
1210
render_errors: [view: Aehttpserver.ErrorView, accepts: ~w(html json)],
1311
pubsub: [name: Aehttpserver.PubSub,
1412
adapter: Phoenix.PubSub.PG2]

apps/aehttpserver/config/test.exs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use Mix.Config
33
# We don't run a server during test. If one is required,
44
# you can enable the server option below.
55
config :aehttpserver, Aehttpserver.Endpoint,
6-
http: [port: 4001],
7-
server: false
6+
http: [port: 4000],
7+
server: true
88

99
# Print only warnings and errors during test
1010
config :logger, level: :warn

apps/aehttpserver/priv/gettext/en/LC_MESSAGES/errors.po

-11
This file was deleted.

apps/aehttpserver/priv/gettext/errors.pot

-10
This file was deleted.

apps/aehttpserver/priv/static/css/app.css

-90
This file was deleted.
-1.23 KB
Binary file not shown.
-13.6 KB
Binary file not shown.

apps/aehttpserver/priv/static/js/app.js

-3
This file was deleted.

0 commit comments

Comments
 (0)