def testClientDeviceListFetch(self):
        """Connect client, fetch device list"""
        # TODO: Figure out a better way to make sure we have a plugin ready to go
        gevent.sleep(.1)
        e = gevent.event.AsyncResult()
        def device_list(msg):
            e.set(msg)
        self.test_socket.inmsg["BPDeviceList"] = device_list
        self.test_socket.get_device_list()
        list_msg = None
        try:
            list_msg = e.get(block=True, timeout=1)
        except gevent.Timeout:
            self.fail("Timed out waiting for device list!")

        self.failIf(list_msg is None)
        self.failIf(list_msg[1] != "BPDeviceList")
        print list_msg
        self.failIf("TestSuccessfulOpen" not in list_msg[2][0]["devices"])
#     # def testClaimValidDevice(self):
#     #     """Claim a device"""
#     #     self.test_socket.send(["s", "BPClaimDevice", ""])
#     #     # We're in the ctd and dtc dicts
#     #     # We've got a heartbeat

#     #     pass

    # def testDroppedClientSocket(self):
    #     """Start claiming a device, drop client socket before plugin bringup"""
    #     pass

    # def testDroppedPluginSocket(self):
    #     """Start claiming a device to point of plugin bringup, drop plugin socket"""
    #     pass

    # def testClaimInvalidDevice(self):
    #     """Claim a device whose bus address does not exist"""
    #     pass

    # def testClientPingTimeoutOnClaim(self):
    #     """Start claim, let client ping timeout"""
    #     pass

    # def testPluginPingTimeoutOnClaim(self):
    #     """Start claim, let plugin ping timeout"""
    #     pass

    # def testMultipleClaimRequests(self):
    #     """Test requesting the same claim multiple times from the same client"""
    #     pass

    # def testClaimRace(self):
    #     """Test requesting the same claim at the same time from different clients"""
    #     pass

    # def testAlreadyClaimedDevice(self):
    #     """Claim a device, then try to claim it again after successfully claiming it"""
    #     pass


# # class ProcessTests(unittest.TestCase):
# #     pass


# # class ServerTests(unittest.TestCase):
# #     pass


# # class UtilsTests(unittest.TestCase):
# #     pass
dataset/ETHPy150Open metafetish/buttplug/tests/test.py/ClaimFlowTests.testClientDeviceListFetch/original