mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-23 15:00:30 +01:00
Init PriceNodeStats
This commit is contained in:
parent
0ec0faaacf
commit
590867b30a
3 changed files with 141 additions and 0 deletions
|
@ -21,6 +21,7 @@ import bisq.monitor.metric.P2PMarketStats;
|
|||
import bisq.monitor.metric.P2PNetworkLoad;
|
||||
import bisq.monitor.metric.P2PSeedNodeSnapshot;
|
||||
import bisq.monitor.metric.P2PRoundTripTime;
|
||||
import bisq.monitor.metric.PriceNodeStats;
|
||||
import bisq.monitor.metric.TorHiddenServiceStartupTime;
|
||||
import bisq.monitor.metric.TorRoundTripTime;
|
||||
import bisq.monitor.metric.TorStartupTime;
|
||||
|
@ -93,6 +94,7 @@ public class Monitor {
|
|||
metrics.add(new P2PNetworkLoad(graphiteReporter));
|
||||
metrics.add(new P2PSeedNodeSnapshot(graphiteReporter));
|
||||
metrics.add(new P2PMarketStats(graphiteReporter));
|
||||
metrics.add(new PriceNodeStats(graphiteReporter));
|
||||
|
||||
// prepare configuration reload
|
||||
// Note that this is most likely only work on Linux
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* This file is part of Bisq.
|
||||
*
|
||||
* bisq is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* bisq is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with bisq. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package bisq.monitor.metric;
|
||||
|
||||
import bisq.monitor.Metric;
|
||||
import bisq.monitor.OnionParser;
|
||||
import bisq.monitor.Reporter;
|
||||
|
||||
import bisq.network.p2p.NodeAddress;
|
||||
|
||||
import org.berndpruenster.netlayer.tor.Tor;
|
||||
import org.berndpruenster.netlayer.tor.TorCtlException;
|
||||
|
||||
import com.runjva.sourceforge.jsocks.protocol.Socks5Proxy;
|
||||
import com.runjva.sourceforge.jsocks.protocol.SocksSocket;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* based on the work of HarryMcFinned
|
||||
*
|
||||
* @author Florian Reimair
|
||||
* @author HarryMcFinned
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
public class PriceNodeStats extends Metric {
|
||||
|
||||
private static final String HOSTS = "run.hosts";
|
||||
|
||||
public PriceNodeStats(Reporter reporter) {
|
||||
super(reporter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute() {
|
||||
SocksSocket socket;
|
||||
try {
|
||||
// fetch proxy
|
||||
Tor tor = Tor.getDefault();
|
||||
checkNotNull(tor, "tor must not be null");
|
||||
Socks5Proxy proxy = tor.getProxy();
|
||||
|
||||
// for each configured host
|
||||
for (String current : configuration.getProperty(HOSTS, "").split(",")) {
|
||||
// parse Url
|
||||
NodeAddress tmp = OnionParser.getNodeAddress(current);
|
||||
|
||||
// connect
|
||||
socket = new SocksSocket(proxy, tmp.getHostName(), tmp.getPort());
|
||||
|
||||
socket.close();
|
||||
|
||||
// report
|
||||
}
|
||||
} catch (TorCtlException | IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
58
monitor/src/test/java/bisq/monitor/PriceNodeStatsTests.java
Normal file
58
monitor/src/test/java/bisq/monitor/PriceNodeStatsTests.java
Normal file
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* This file is part of Bisq.
|
||||
*
|
||||
* Bisq is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* Bisq is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Bisq. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package bisq.monitor;
|
||||
|
||||
import bisq.monitor.metric.PriceNodeStats;
|
||||
|
||||
import org.berndpruenster.netlayer.tor.NativeTor;
|
||||
import org.berndpruenster.netlayer.tor.Tor;
|
||||
import org.berndpruenster.netlayer.tor.TorCtlException;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* @author Florian Reimair
|
||||
*/
|
||||
public class PriceNodeStatsTests {
|
||||
|
||||
private final static File torWorkingDirectory = new File("monitor/" + PriceNodeStatsTests.class.getSimpleName());
|
||||
|
||||
@BeforeAll
|
||||
public static void setup() throws TorCtlException {
|
||||
// simulate the tor instance available to all metrics
|
||||
Tor.setDefault(new NativeTor(torWorkingDirectory));
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
public static void cleanup() {
|
||||
Tor tor = Tor.getDefault();
|
||||
checkNotNull(tor, "tor must not be null");
|
||||
tor.shutdown();
|
||||
torWorkingDirectory.delete();
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue