Ejemplo n.º 1
0
    def test_benchmark_under_window(self):
        self.assertIsNone(self.b.get_benchmark())

        self.b.add_rate(Rate("20 MH / s"))
        self.assertIsNone(self.b.get_benchmark())

        self.b.add_rate(Rate("20 MH / s"))
        self.assertIsNone(self.b.get_benchmark())
Ejemplo n.º 2
0
class TestRate(MinerTestCase):
    def setUp(self):
        self.hr1 = Rate("20 MH/s")
        self.hr2 = Rate("20 MH/s")
        self.hr3 = Rate("20 kH/s")

    def test_init(self):
        with self.assertRaises(AssertionError):
            Rate("1 MH/s/s")

        self.assertEqual(str(Rate("9014.51MH/s")), "9014.51 MH / s")
        self.assertEqual(str(Rate("9014.51 MH/s")), "9014.51 MH / s")
        self.assertEqual(str(Rate("9014.51 MH / s")), "9014.51 MH / s")

        self.assertEqual(str(Rate("9014.51kSol/s")), "9014.51 kSol / s")
        self.assertEqual(str(Rate("9014.51 kSol/s")), "9014.51 kSol / s")
        self.assertEqual(str(Rate("9014.51 kSol / s")), "9014.51 kSol / s")

    def test_rate_profitability(self):
        self.assertEqual(self.hr1.get_mbtc_per_day("0.05 mBTC*s/day/MH"), 1.0)

    def test_rate_to_base_units(self):
        self.assertEqual(str(self.hr1.to_base_units()), "20000000.0 H / s")

    def test_rate_cmp(self):
        self.assertTrue(self.hr1 > self.hr3)
        self.assertFalse(self.hr3 > self.hr1)

        self.assertTrue(self.hr3 < self.hr2)
        self.assertFalse(self.hr2 < self.hr3)

        self.assertTrue(self.hr3 <= self.hr2)
        self.assertTrue(self.hr1 <= self.hr2)
        self.assertFalse(self.hr2 <= self.hr3)

        self.assertTrue(self.hr2 >= self.hr3)
        self.assertTrue(self.hr2 >= self.hr1)
        self.assertFalse(self.hr3 >= self.hr2)

        self.assertFalse(self.hr1 == self.hr3)
        self.assertFalse(self.hr1 == None)  # NOQA

        self.assertTrue(self.hr1 != self.hr3)
        self.assertFalse(self.hr1 != self.hr2)
        self.assertTrue(self.hr1 != None)  # NOQA

    def test_rate_add(self):
        self.assertEqual(self.hr1 + self.hr2, Rate("40 MH/s"))

    def test_rate_str(self):
        self.assertEqual(str(self.hr1), "20.0 MH / s")

    def test_rate_solution_simple(self):
        r = Rate("20 kSol/s")
        self.assertEqual(str(r), "20.0 kSol / s")
        self.assertEqual(str(r.to_base_units()), "20000.0 Sol / s")
Ejemplo n.º 3
0
 def test_benchmark_bench_simple(self):
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.assertEqual(self.b.get_benchmark(), Rate("20 MH / s"))
Ejemplo n.º 4
0
    def benchmark(self):
        cmd = self._get_run_cmd(self.path_to_exec,
                                self.algo,
                                "",
                                "",
                                "",
                                "",
                                kwargs={
                                    "--benchmark": "",
                                    "--no-color": ""
                                })
        LOG.debug("Benchmarking \033[92m%s\033[0m...", self.algo)
        cache_key = "BENCHHR%s" % (cmd)
        cached_benchmark = MinerStore.get(cache_key)
        if cached_benchmark:
            b = Rate(cached_benchmark)
            LOG.debug("Benchmark found in cache: %s!", b)
            return b

        LOG.info("Benchmark not found for \033[92m%s\033[0m. Benchmarking...",
                 self.algo)

        bench_proc = start_proc(cmd, pipe_stdout=True)
        bm = Benchmarker()

        for line in bench_proc.stdout:
            line = line.strip().decode("UTF-8")

            if "Total:" in line:
                r = Rate(line.split(":")[-1].strip())
                bm.add_rate(r)

                final_hashrate = bm.get_benchmark()
                if final_hashrate:
                    break

        term_proc(bench_proc)

        MinerStore.set(cache_key, str(final_hashrate))
        LOG.info("Benchmark found: %s!", final_hashrate)

        return final_hashrate
Ejemplo n.º 5
0
    def _stdout_printer(stdout, name, share_cond, algo):
        for line in stdout:
            line = line.decode("UTF-8").strip()
            if "booooo" in line or "yes!" in line:
                share_cond.acquire()
                share_cond.notify_all()
                share_cond.release()
                speed = line.split(",")[-1].rpartition(" ")[0].strip()

                LOG.share(algo, "yes!" in line, Rate(speed))

            LOG.debug(line)
Ejemplo n.º 6
0
    def test_init(self):
        with self.assertRaises(AssertionError):
            Rate("1 MH/s/s")

        self.assertEqual(str(Rate("9014.51MH/s")), "9014.51 MH / s")
        self.assertEqual(str(Rate("9014.51 MH/s")), "9014.51 MH / s")
        self.assertEqual(str(Rate("9014.51 MH / s")), "9014.51 MH / s")

        self.assertEqual(str(Rate("9014.51kSol/s")), "9014.51 kSol / s")
        self.assertEqual(str(Rate("9014.51 kSol/s")), "9014.51 kSol / s")
        self.assertEqual(str(Rate("9014.51 kSol / s")), "9014.51 kSol / s")
Ejemplo n.º 7
0
 def test_benchmark_dec(self):
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("19 MH / s"))
     self.b.add_rate(Rate("18 MH / s"))
     self.b.add_rate(Rate("17 MH / s"))
     self.b.add_rate(Rate("16 MH / s"))
     self.assertIsNone(self.b.get_benchmark())
Ejemplo n.º 8
0
 def test_benchmark_inc(self):
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("21 MH / s"))
     self.b.add_rate(Rate("22 MH / s"))
     self.b.add_rate(Rate("23 MH / s"))
     self.b.add_rate(Rate("24 MH / s"))
     self.assertIsNone(self.b.get_benchmark())
Ejemplo n.º 9
0
 def test_add_rate(self):
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("20 MH / s"))
     self.b.add_rate(Rate("200 kH / s"))
     self.b.add_rate(Rate("19 MH / s"))
Ejemplo n.º 10
0
 def setUp(self):
     self.hr1 = Rate("20 MH/s")
     self.hr2 = Rate("20 MH/s")
     self.hr3 = Rate("20 kH/s")
Ejemplo n.º 11
0
 def test_rate_solution_simple(self):
     r = Rate("20 kSol/s")
     self.assertEqual(str(r), "20.0 kSol / s")
     self.assertEqual(str(r.to_base_units()), "20000.0 Sol / s")
Ejemplo n.º 12
0
 def test_rate_add(self):
     self.assertEqual(self.hr1 + self.hr2, Rate("40 MH/s"))
Ejemplo n.º 13
0
    def test_benchmark_bench_more_complex(self):
        self.b.add_rate(Rate("20 MH / s"))
        self.b.add_rate(Rate("21 MH / s"))
        self.b.add_rate(Rate("22 MH / s"))
        self.b.add_rate(Rate("23 MH / s"))
        self.b.add_rate(Rate("24 MH / s"))
        self.b.add_rate(Rate("25 MH / s"))
        self.b.add_rate(Rate("26 MH / s"))
        self.b.add_rate(Rate("24 MH / s"))
        self.b.add_rate(Rate("25 MH / s"))
        self.b.add_rate(Rate("26 MH / s"))

        self.assertEqual(self.b.get_benchmark(), None)

        self.b.add_rate(Rate("26 MH / s"))
        self.b.add_rate(Rate("25 MH / s"))
        self.b.add_rate(Rate("24 MH / s"))

        self.assertEqual(self.b.get_benchmark(), Rate("25 MH / s"))