def listeprobecontroller(controller): #Store probes attached to the given controller
    db = client.bdd1
    collection = db.probes
    i = 0
    count=0
    while i <= 18500:
        request = AtlasRequest(**{"url_path": "/api/v1/probe/?limit=500&offset=" + str(i)})
        result = namedtuple('Result', 'success response')
        (is_success, response) = request.get()

        for id in response["objects"]:
            if id["status"] == 1 or id["status"] == 2:
                request = AtlasRequest(**{"url_path": "/api/v1/measurement/7000/result/?start=" + str(id["status_since"]) + "&stop=" + str(id["status_since"]) + "&prb_id=" + str(id["id"])})
                result = namedtuple('Result2', 'success response2')
                (is_success2, response2) = request.get()

                if len(response2) > 0 and response2[0]["controller"] == controller:
                    collection.insert_one(
                        {
                            "id" : id["id"],
                            "status" : id["status"],
                            "timestamp" : id["last_connected"],
                            "latitude" : id["latitude"],
                            "longitude" : id["longitude"],
                            "controller" : response2[0]["controller"],
                            "asn" : id["asn_v4"],
                            "country_code" : id["country_code"]
                        }
                    )

            count+=1

            print(str((count/response["meta"]["total_count"])*100) + " %")
Example #2
0
 def test_user_agent(self):
     with mock.patch("ripe.atlas.cousteau.request.__version__", 999):
         standard = "RIPE ATLAS Cousteau v999"
         self.assertEqual(AtlasRequest().http_agent, standard)
         self.assertEqual(
             AtlasRequest(user_agent=None).http_agent, standard)
         self.assertEqual(
             AtlasRequest(user_agent="w00t").http_agent, "w00t")
def getAnchorMsmPage(page=1):
    url_path = "/api/v2/anchor-measurements?page=%s" % page

    request = AtlasRequest(**{"url_path": url_path})
    (is_success, response) = request.get()

    if not is_success:
            print "Error could not get all anchors data!"
            return []
    else:
        if response["next"] is None:
            return response["results"], None
        else:
            return response["results"], page+1
Example #4
0
def getAnchorMsmPage(page=1):
    url_path = "/api/v2/anchor-measurements?page=%s" % page

    request = AtlasRequest(**{"url_path": url_path})
    (is_success, response) = request.get()

    if not is_success:
        print "Error could not get all anchors data!"
        return []
    else:
        if response["next"] is None:
            return response["results"], None
        else:
            return response["results"], page + 1
Example #5
0
    def test_get_request(self):
        """Unittest for Atlas get request"""
        if self.server == "":
            raise SkipTest

        request = AtlasRequest(**{
            "verify": False,
            "url_path": "/api/v2/anchors"
        })
        result = namedtuple('Result', 'success response')
        (result.success, result.response) = request.get()
        print(result.success, result.response)
        self.assertTrue(result.response["results"])
        self.assertTrue(result.success)
def test_get_request():
    """Unittest for Atlas get request"""
    raise SkipTest("Skip change request")
    request = AtlasRequest(
        **{
            "server": "testing",
            "url_path": (
                "/api/v1/measurement/1019083/"
                "?fields=probes&format=json"
            )
        }
    )
    result = namedtuple('Result', 'success response')
    (result.success, result.response) = request.get()
    assert (result.success)
    def test_get_request(self):
        """Unittest for Atlas get request"""
        if self.server == "":
            raise SkipTest

        request = AtlasRequest(
            **{
                "url_path": "/api/v2/anchors"
            }
        )
        result = namedtuple('Result', 'success response')
        (result.success, result.response) = request.get()
        print result.success, result.response
        self.assertTrue(result.response["results"])
        self.assertTrue(result.success)
Example #8
0
    def getTraceroutes(self):
        """Get traceroute results for all the measurements found with self.msmsURL"""

        for msm in self.msms:
            resPath = "/api/v2/measurements/%s/results/" % (msm["id"], )
            request = AtlasRequest(**{"url_path": resPath})
            (is_success, response) = request.get()

            if is_success:
                self.traceroutes[msm["id"]] = response
            else:
                logging.warn(
                    "Something wrong happened while fetching traceroute results"
                )
                logging.warn(response)
Example #9
0
    def getMsmIds(self):
        """Get metadata for measurements corresponding to self.msmsURL"""

        nextPath = self.msmsURL % (self.starttime, self.endtime)
        while nextPath:
            request = AtlasRequest(**{"url_path": nextPath})
            (is_success, response) = request.get()
            if not is_success:
                logging.warn(
                    "Something wrong happened while fetching measurement descriptions"
                )

            self.msms.extend(response["results"])
            if response["next"] is not None:
                nextPath = response["next"].partition(
                    "https://atlas.ripe.net")[2]
            else:
                nextPath = False
            logging.info(nextPath)
Example #10
0
def storeTracerouteIds():

    sys.stdout.write("Getting all anchoring measurement ids...\n")
    allMsm = getAllAnchorMsm()
    sys.stdout.write("%s anchoring measurements found!\n" % len(allMsm))

    v4file = open("anchorMsmIdsv4.txt", "w")
    v6file = open("anchorMsmIdsv6.txt", "w")
    count = 0

    sys.stdout.write("Filtering out traceroute measurements...\n")
    # filters = {"type": "traceroute", "is_public": True}
    # measurements = MeasurementRequest(**filters)

    for m in allMsm:
        request = AtlasRequest(
            **{"url_path": m["measurement"][len(u"https://atlas.ripe.net"):]})
        (is_success, response) = request.get()

        if not is_success:
            print "error cannot get the measurment details!?\n %s" % m
            continue

        if response["type"] != "traceroute":
            continue

        count += 1
        sys.stdout.write("\r%s anchoring measurements found" % count)
        sys.stdout.flush()
        if response["af"] == 4:
            v4file.write('"msm_id":%s\n' % response["id"])
            v4file.flush()
        elif response["af"] == 6:
            v6file.write('"msm_id":%s\n' % response["id"])
            v6file.flush()
        else:
            print "Unknown address family!! \n %s" % m
def storeTracerouteIds():

    sys.stdout.write("Getting all anchoring measurement ids...\n")
    allMsm = getAllAnchorMsm()
    sys.stdout.write("%s anchoring measurements found!\n" % len(allMsm))

    v4file = open("anchorMsmIdsv4.txt","w")
    v6file = open("anchorMsmIdsv6.txt","w")
    count = 0

    sys.stdout.write("Filtering out traceroute measurements...\n")
    # filters = {"type": "traceroute", "is_public": True}
    # measurements = MeasurementRequest(**filters)
    
    for m in allMsm:
        request = AtlasRequest(**{"url_path": m["measurement"][len(u"https://atlas.ripe.net"):]})
        (is_success, response) = request.get()

        if not is_success:
            print "error cannot get the measurment details!?\n %s" % m
            continue

        if response["type"] != "traceroute":
            continue

        count += 1
        sys.stdout.write("\r%s anchoring measurements found" % count)
        sys.stdout.flush()
        if response["af"] == 4:
            v4file.write('"msm_id":%s\n' % response["id"])
            v4file.flush()
        elif response["af"] == 6:
            v6file.write('"msm_id":%s\n' % response["id"])
            v6file.flush()
        else:
            print "Unknown address family!! \n %s" % m
 def setUp(self):
     self.request = AtlasRequest(**{
         "key": "blaaaa",
         "server": "test",
         "url_path": "testing"
     })
class TestAtlasRequest(TestCase):
    def setUp(self):
        self.request = AtlasRequest(**{
            "key": "blaaaa",
            "server": "test",
            "url_path": "testing"
        })

    def test_headers(self):
        """Tests header fields of the request."""
        expected_output = {
            "User-Agent": "RIPE ATLAS Cousteau v{0}".format(__version__),
            "Content-Type": "application/json",
            "Accept": "application/json"
        }
        self.assertEqual(expected_output, self.request.get_headers())

    def test_http_method_args(self):
        """Tests initial args that will be passed later to HTTP method."""
        expected_output = {
            "params": {"key": "blaaaa"},
            "verify": True,
            "headers": {
                "User-Agent": "RIPE ATLAS Cousteau v{0}".format(__version__),
                "Content-Type": "application/json",
                "Accept": "application/json"
            },
            "proxies": {},
        }
        self.assertEqual(expected_output, self.request.http_method_args)

    def test_get_method(self):
        """Tests GET reuest method"""
        extra_params = {"bull": "shit", "cow": "shit", "horse": "shit"}
        expected_args = {
            "params": {
                "key": "blaaaa", "bull": "shit",
                "cow": "shit", "horse": "shit"
            },
            "verify": True,
            "headers": {
                "User-Agent": "RIPE ATLAS Cousteau v{0}".format(__version__),
                "Content-Type": "application/json",
                "Accept": "application/json"
            },
            "proxies": {},
        }
        with mock.patch("ripe.atlas.cousteau.request.AtlasRequest.http_method") as mock_get:
            mock_get.return_value = True
            self.request.get(**extra_params)
            self.assertEqual(self.request.http_method_args, expected_args)

    def test_url_build(self):
        """Tests build of the url of the request."""
        self.request.build_url()
        self.assertEqual(self.request.url, "https://testtesting")

    def test_success_http_method(self):
        """Tests the main http method function of the request in case of success"""
        with mock.patch("ripe.atlas.cousteau.AtlasRequest.get_http_method") as mock_get:
            fake = FakeResponse(json_return={"blaaa": "b"})
            mock_get.return_value = fake
            self.assertEqual(
                self.request.http_method("GET"),
                (True, {"blaaa": "b"})
            )

            fake_error = FakeErrorResponse()
            mock_get.return_value = fake_error
            self.assertEqual(
                self.request.http_method("GET"),
                (True, "testing")
            )

    def test_not_success_http_method(self):
        """Tests the main http method function of the request in case of fail"""
        with mock.patch("ripe.atlas.cousteau.AtlasRequest.get_http_method") as mock_get:
            fake = FakeResponse(json_return={"blaaa": "b"}, ok=False)
            mock_get.return_value = fake
            self.assertEqual(
                self.request.http_method("GET"),
                (False, {"blaaa": "b"})
            )

            fake_error = FakeErrorResponse(ok=False)
            mock_get.return_value = fake_error
            self.assertEqual(
                self.request.http_method("GET"),
                (False, "testing")
            )

    def test_exception_http_method(self):
        """Tests the main http method function of the request in case of fail"""
        with mock.patch("ripe.atlas.cousteau.AtlasRequest.get_http_method") as mock_get:
            mock_get.side_effect = requests.exceptions.RequestException("excargs")
            self.assertEqual(
                self.request.http_method("GET"),
                (False, ("excargs",))
            )

    def test_user_agent(self):
        with mock.patch("ripe.atlas.cousteau.request.__version__", 999):
            standard = "RIPE ATLAS Cousteau v999"
            self.assertEqual(AtlasRequest().http_agent, standard)
            self.assertEqual(AtlasRequest(user_agent=None).http_agent, standard)
            self.assertEqual(AtlasRequest(user_agent="w00t").http_agent, "w00t")
        prova = json.loads(elem)
        if prova.get("id"):
            MesId = prova["id"]
        else:
            MesId = prova["msm_id"]
        print(MesId)
        if prova["probes"] == None:
            probe_id = prova['probes'][0]['id']
            url_path = "/api/v2/measurements/" + str(
                MesId) + "/latest/?probe_ids=" + str(probe_id)
        else:
            url_path = "/api/v2/measurements/" + str(MesId) + "/latest"
        #url_path ="https://atlas.ripe.net/api/v2/measurements/"+ str(MesId) +"/results/?start=" + str(inizio) + "&?stop=" + str(fine);

        request = AtlasRequest(**{
            "url_path": url_path
        })  #perchè possono essere più di uno i risult.
        (is_success, results) = request.get()

        #se è denied lo scheduling allora fa l'else
        if results != []:
            kwargs = {
                "msm_id": MesId,
                "start": results[0]["timestamp"],
                "stop": results[0]["timestamp"],
                "probe_ids": results[0]["prb_id"]
            }
            #print(kwargs)
            is_success, results = AtlasResultsRequest(**kwargs).create()
            #is_success, results = AtlasLatestRequest(**kwargs).create()
 def setUp(self):
     self.request = AtlasRequest(
         **{"key": "default_api_key", "server": "test", "url_path": "testing"}
     )