Secure enclosure for devices used to test remote connectivity

Mobile devices executing applications may be tested for networking issues by utilizing a test network having proxy access devices placed at different physical locations. Devices may be stored in a secure enclosure that includes a host device. The enclosure includes access controls to prevent unauthorized removal of devices or access to stored data. If an unauthorized access, disconnection from the host device, or disconnection of a device from a power source is detected, devices may be placed into a locked state or data on the devices may be deleted. The enclosure may also include a control device for testing the exchange of Bluetooth data by the devices. The enclosure may also include conductive members placed on the touch sensors of devices for providing simulated touch input to the touch sensors by changing the capacitance of adjacent regions of the touch sensors.

BACKGROUND

Mobile devices executing applications that utilize data networks during operation may experience failures or otherwise produce adverse user experiences as a result of network conditions. Testing of these applications using devices at different physical locations that access different networks may be performed to prevent or mitigate the impacts of failures. Maintaining the devices in a secure manner may prevent loss or tampering of the devices or data stored on the devices.

DETAILED DESCRIPTION

Mobile devices may execute an application to provide various functions. Mobile devices may include, but are not limited to, smartphones, laptops, tablet computers, embedded devices, “internet of things” devices, wearable computing devices, appliances, automobiles, aircraft, and so forth. Functions provided by an application may involve retrieval of data, presentation of data to a user, processing of data, and so forth. Some applications may communicate with a destination device, such as a server, using a network, such as a cellular network, a Wi-Fi network, or a wired network such as a wired Local Area Network (LAN). For example, a mapping application may send information to a server that indicates a position of the mobile device and receive map data to present on a display of the mobile device. Problems with this communication may result in the application failing to perform the desired function, error messages, improper operation, and so forth. Continuing the example, a long latency or delay in receiving the map data may cause the application on the mobile device to present an error to the user or result in an adverse user experience. A user may discontinue using the application due to these problems, and instead use another application. Additionally, some problems associated with use of an application while using the network may not be immediately perceived by the user. For example, the application may drain the battery of the mobile device by excessively accessing the destination device, may consume more data than desired, and so forth.

Performance of the network used by the mobile device executing the application may vary due to geographic location (geolocation) of the mobile device, the network access point in use, congestion at the network access point, capability of the network access point, and so forth. For example, during a morning commute, many users may be streaming video entertainment content to their mobile devices, resulting in overall network congestion. As another example, a telecommunication company may have some network access points that support 3G data transmission while other network access points are able to support 4G data transmission.

An application may be tested prior to release to a general population of users by analyzing the performance of an application under test (AUT) under different network conditions. Traditionally, different network conditions have been obtained by simulation or by physically transporting a test device (TD) that is executing the AUT to a particular geolocation. Simulation lacks fidelity to real-world conditions, is expensive to implement and maintain, and may result in developers correcting problems that appear in a simulation but not in the real-world. As a result, simulation of varying network conditions is of limited value. Physically transporting the TD and an operator to perform the tests may provide useful test data, but is expensive and time consuming. Once the application has been deployed to the general population of users, additional information about the conditions of the network and the use by the application of the network may also be useful the developer. For example, data about geolocation and connectivity to the network during usage of the application may allow the developer to adjust the application to provide a better experience to the user.

U.S. patent application Ser. No. 15/783,859, incorporated by reference previously, describes techniques and systems to acquire information regarding use of an application using a collection of proxy host devices that connect to a first network and one or more proxy access devices that provide access to a second network. A proxy access device may execute a local traffic module to facilitate the transfer of data between the first network and the second network. The transfer may be unidirectional or bidirectional. In some implementations, the local traffic module may execute within a non-privileged user space of an operating system of the proxy access device. Proxy access devices may be located at various geolocations, may utilize different telecommunication companies, and so forth. The proxy access devices may be homogenous, such as of the same make and model, or may differ from one another. For example, the proxy access devices may comprise relatively inexpensive commodity cellphones that provide data connectivity for a particular telecommunication company, each associated with a unique subscriber identity module (SIM).

As one example of a testing process, a developer who is present in Sacramento, Calif., USA, may want to test operation of the AUT on a network in Bangalore, Karnataka, India. The developer may utilize one or more user interfaces provided by a Software Development Kit (SDK) to select a proxy access device located in Bangalore. Once selected, in one implementation, the SDK redirects the AUT traffic to the selected proxy access device by way of the first network. In another implementation, router configuration data may be sent to a router through which the AUT traffic will be sent. Responsive to the router configuration data, the router may be configured to subsequently direct the AUT traffic to the selected proxy host device. The proxy access device, in turn, transfers data between the first network and a second network. For example, the proxy access device located in Bangalore may be a cellphone that is tethered to a proxy host device and is also able to connect to a network associated with a telecommunication company in Bangalore. The proxy host device may be used to configure the proxy access device, retrieve status data about the proxy access device, connect the proxy access device to the first network, gather proxy session data, and so forth.

By using such techniques, testing of an AUT may be performed in both pre-launch and post-launch phases of the application quickly, comprehensively, and cost effectively. For example, a developer may select a particular proxy access device to use and run tests of an AUT using a selected network without ever leaving their office. Effects on the AUT resulting from network issues may be discovered more readily and corrected, resulting in an improved user experience, improved mobile device battery life, a reduction in otherwise unnecessary traffic on networks, and so forth.

When placing a proxy access device at a location for testing applications, the proxy access device may be at risk for theft, damage, tampering, and so forth. To prevent such outcomes, proxy access devices, proxy host devices, and other associated devices and components may be placed in a secure enclosure. For example, an enclosure may include a container of any shape or dimension having a mechanism that controls access to the interior. Mechanisms for controlling access may include physical impediments to access, such as locks. In some implementations, a mechanism for controlling access may be used to authorize attempts to access the enclosure. For example, the mechanism may include components for receiving user input, such as a keypad or touch sensor for receiving a pin number, password, gesture, or other method for authenticating an attempt to access the enclosure. In other implementations, the mechanism may receive biometric input, such as a fingerprint, image data using one or more cameras, audio data using one or more microphones, and so forth, which may be used to authorize an attempt to access the enclosure. In still other implementations, the mechanism may receive signals or other types of input from a device, such as an electronic key, a radio frequency identification (RFID) tag, a portable computing device, and so forth. Receipt of input that corresponds to valid authorization data may enable access to the interior of the enclosure. Receipt of input that corresponds to valid authorization data may also enable devices within the enclosure to be accessed or removed, new devices to be added to the enclosure, and so forth. For example, valid authorization data may include a preselected password, lock code, and so forth. Receipt of input that matches a preselected password or lock code may enable access to the interior of the enclosure. Attempts to access the enclosure after providing input that does not match the authorization data or in the absence of input may be determined as an unauthorized access attempt, which may result in notifications, alarms, locking of devices, deletion of data on devices, and so forth.

Devices may be retained in the interior of the enclosure while being used to test an AUT to prevent damage, theft, or tampering of the devices and to prevent access to potentially confidential data stored on the devices or associated with an AUT. The enclosure may also be used to maintain a log, audit, or other type of record that indicates individuals that have accessed the enclosure. For example, if a user provides identifying information to obtain access to the interior of the enclosure, devices that are added to or removed from the enclosure subsequent to receipt of the identifying information may be attributed to the user. The interior of the enclosure may include one or more trays, slots, or other features that may retain a proxy host device, a tablet, a smartphone, or another type of proxy access device in a desired position. In one implementation, an enclosure may contain three proxy host devices and twenty-four proxy access devices. For example, eight proxy access devices may communicate with a single proxy host device. In some implementations, a proxy access device may communicate with a proxy host device using a wired connection, such as a cable engaging a Universal Serial Bus (USB) port of the proxy host device to the proxy access device.

If a wired connection between two devices is disconnected when input that corresponds to valid authorization data to access the interior of the enclosure has not been received, a control action may be performed to protect the security of the proxy access devices. Control actions may include placing one or more devices in a locked state, deactivating one or more devices, or deleting data from one or more devices. For example, a device may execute a security application, such as a “watchdog” application, and in response to detecting an unauthorized disconnection, the application may cause the device to enter a locked state or delete data. When input that corresponds to valid authorization data is received, a signal may be provided to the devices to deactivate the security application or prevent the security application from performing control actions. In other implementations, in response to detecting an unauthorized disconnection a wireless signal may be provided to the device to cause the device to enter a locked state or delete data. Similar control actions may be performed if a disconnection between a device and a power source is detected.

In some implementations, the enclosure may include one or more sensors that determine deformation, displacement, or destruction of a surface of the enclosure. For example, an electrical mesh or similar material may be embedded within a surface of the enclosure, and disturbance of the electrical mesh may cause a signal to be provided to one or more devices in the enclosure. As another example, position sensors, proximity sensors, motions sensors, cameras, and so forth may determine the location or condition of one or more lids, walls, or access panels for an enclosure. In response to sensor data indicative of an unauthorized access attempt, one or more devices may be locked, or data may be deleted from the device(s). In some implementations, the enclosure may include one or more sensors for determining environmental conditions, such as humidity, temperature, wind, and so forth. For example, an environment associated with the enclosure may be monitored, and in some cases, an environment within the interior of the enclosure may be controlled, to reduce wear or damage to devices within the enclosure and increase the lifespan of the devices.

In some implementations, one or more devices in the enclosure may include a touch sensor, and the enclosure may include a device that provides simulated touch input to the touch sensor. For example, a smartphone may be in a locked state, during which the smartphone is not responsive to signals or software commands to cause the device to perform an operation. Input to the touch sensor may be used to unlock the smartphone, after which signals or software commands may be used to control the device. Use of a device within the enclosure that provides simulated touch input may enable smartphones and similar devices to be unlocked, and to allow performance of various operations that utilize touch input to be tested. In one implementation, a device for providing simulated touch input may include a circuit board or similar base member having a planar shape, with one or more conductive members mounted to the base member. The base member may be sized or shaped to be positioned in association with a touch sensor of a device. For example, a base member may include a rectangular printed circuit board (PCB) that is positioned over a rectangular touchscreen display of a smartphone. Continuing the example, when an edge of the base member is within a threshold distance of an edge of the touch sensor, conductive members mounted to the base member may be positioned proximate to desired locations on the touch sensor. For example, conductive members may be positioned at locations that correspond to a capacitive numeric keypad, letters on a capacitive keyboard, locations for providing a gesture input, and so forth. Signals provided to a controller may cause one or more conductive members, to create a change in capacitance to regions of a capacitive touch sensor proximate to the conductive member(s) to simulate touch input provided to the regions of the touch sensor.

In some implementations, the conductive members may be secured to a device using a housing. For example, the base member may include one or more edges extending therefrom, and in some cases, tabs, lips, or other protrusions that extend from the ends of the edges. The base member may contact a front side of a device, such as the side of a smartphone or tablet that includes a touchscreen display, while the edges extending from the base member may contact the edges of the device. Lips or protrusions extending from the edges may contact or limit movement of a back side of the device. Positioning the base member into association with the device in this manner may position the conductive members over selected locations of the touch sensor of the device. In other implementations, a base member may be secured to a device using mechanical means, such as clips or other fasteners, adhesives, and so forth.

In some implementations, a control device in the enclosure may be used to test one or more of the devices using other communication protocols. For example, a proxy access device may communicate with a test device using a first communication protocol, such as Wi-Fi, but may also be capable of communication using another protocol, such as Bluetooth. The control device may establish a Bluetooth communication link with the proxy access device to enable the exchange of Bluetooth data by the proxy access device. In some implementations, the control device may be used to control the sample rate for the Bluetooth data, a transmit power used by a Bluetooth transceiver of the control device, a mode of the Bluetooth connection between the control device and the proxy access device, other characteristics of the Bluetooth data or transmission, and so forth. For example, the control device may simulate a headset that communicates with a smartphone using a Bluetooth protocol, and a proxy access device may exchange data with the control device using a sample rate and other settings that simulate data that would be exchanged with a headset. Continuing the example, Bluetooth data that includes audio may be provided from the proxy access device to the control device to generate test data indicative of the Bluetooth transmission performed by the proxy access device without causing the output of audio. As another example, the control device may simulate a microphone or other type of Bluetooth source or input device, which may provide Bluetooth data to the proxy access device. Test data indicative of the receipt of Bluetooth data performed by the proxy access device may then be generated. In other cases, data may be exchanged between the control device and the proxy access device bidirectionally (e.g., full duplex communication). The control device may function as a universal adapter for transmitting data to and from proxy host devices and proxy access devices. For example, the control device may be used to send and receive data in any format for testing, including formats not natively supported by the proxy host device or proxy access device. In some implementations, the control device may be used to provide commands to the proxy access device or proxy host device that simulate commands provided using a Bluetooth controller, such as commands associated with remote control devices, headsets, and so forth. For example, a simulated command associated with a remote control device may include a command to play content, pause content, list contacts associated with a device, and so forth. In some implementations, a command from the control device may be used to reset or power cycle particular communication links or devices in the enclosure, while maintaining other communication links. For example, the control device may maintain a communication link with a proxy host device and a communication link with a first proxy access device, while resetting a communication link used by a second proxy access device. The control device may also be used to limit the pairing of proxy access devices for security purposes. For example, a single Bluetooth module on the control device may be paired with a single proxy access device, and the communication link between the module and the proxy access device may remain until terminated by a command from the proxy host device, such that another device is prevented from controlling the link or determining content of the communication between the devices.

FIG.1depicts an implementation of a system100for testing applications that utilize network resources, in which devices used to test the applications are placed in a secured enclosure102. An application under test (AUT)104may be executed on a computing device, such as a test device (TD)106, a workstation108, and so forth. For example, the TD106may comprise a mobile device such as a smart phone, tablet computer, wearable computing device, and so forth. The workstation108may comprise a laptop, desktop computer, and so forth. The AUT104may be an application that is at any stage in a development or maintenance lifecycle. For example, the AUT104may comprise a software that has not yet been released (e.g., an alpha, prerelease, or pre-launch version), or may comprise a previously released version that is undergoing testing. The workstation108may include an integrated development environment (IDE) to facilitate the creation and editing of program code, debugging, compiling, and so forth. In some implementations, the workstation108may comprise an emulator or simulator that is designed to execute the AUT104as if it were executing on another piece of hardware, under a different operating system, and so forth.

As shown inFIG.1, the TD106or workstation108on which the AUT104is executed may be located at a first geolocation110(1). The geolocation110comprises a geographic location, such as a particular room, building, city, state, country, and so forth. For example, the geolocation110may be specified by a set of coordinates with regard to latitude and longitude on the surface of the Earth.

One or more of the TD106or the workstation108may be connected to a first network112(1). The first network112(1) may, in turn, be connected to or be part of a larger network. For example, the first network112(1) may comprise the Internet. The connection used by the TD106or the workstation108may include, but is not limited to, a wired Ethernet connection, a wireless local area network (WLAN) connection such as Wi-Fi, and so forth. For example, the first geolocation110(1) may comprise an office, and the TD106may connect to a local Wi-Fi access point that is connected via Ethernet cable to a router. The router, in turn, may be connected to a cable modem that provides connectivity to the Internet. During operation, the AUT104may access an external resource, such as one or more destination devices114.

The AUT104may generate AUT traffic116that is exchanged with the destination device(s)114during operation. Traditionally, the AUT traffic116generated by the TD106at the first geolocation110(1) would be sent to the first network112(1) and on to the destination device114. However, this traditional situation limits the ability to generate test data to data that reflects conditions associated with the first geolocation110(1) and first network112(1).

To enable the AUT to be tested under conditions associated with different geolocations110and networks112, a software development kit (SDK) may be incorporated into the AUT104. In other implementations, techniques other than an SDK may be used to provide the functionality described herein. For example, lines of computer code that provide the functionality of at least a portion of the SDK may be incorporated into the code base of the AUT104. The SDK may provide a user interface that allows for the redirection of the AUT traffic116. For example, the SDK may comprise instructions to establish communication with one or more management servers118that may include modules for coordinating the activities of devices and analyzing data determined from the devices.

The management server118may coordinate the activities of one or more of proxy host devices120or proxy access devices122. The proxy host device120may connect to the first network112(1) and to one or more of the proxy access devices122. For example, the proxy host device120may comprise a server, desktop computer, tablet or other type of computing device to which eight proxy access devices122are connected using a wired connection, such as a cable connecting each proxy access device122to a USB port of the proxy host device120. WhileFIG.1depicts a single proxy host device120and four proxy access devices122, any number of proxy host devices120and proxy access devices122may be maintained within the enclosure102. In one implementation, the enclosure102may include one or more trays, each tray having slots for retaining at least one proxy host device120and multiple proxy access devices122. For example, an enclosure102may include from one to three trays and may contains three proxy host devices120and twenty four proxy access devices122, with eight proxy access devices122communicating with each proxy host device120.

The proxy access devices122may connect to a network access point124that provides connectivity to a second network112(2). For example, the proxy access devices122may comprise commodity cellphones, the network access points124may comprise cell phone towers, and the second network112(2) may comprise a WWAN, such as a wireless cellular data network (WCDN). The second network112(2) may in turn communicate with the first network112(1). For example, a WCDN operated by a telecommunication company may interconnect or have a peering agreement with an Internet backbone provider. As a result, a user of the second network112(2) may be able to access resources on the first network112(1), and vice versa. In some implementations, the proxy access devices122may be capable of communication with the destination device(s)114or other devices using the second network112(2) or another network112, such as a cellular network, without communicating using the first network112(1).

As shown inFIG.1, the proxy access devices122may be located at a geolocation110(2) that is different from that of the TD106. For example, the enclosure102and the devices maintained in the enclosure102may be located in another city, state, country, and so forth that differs from the location of the TD106. As part of the testing process for the AUT104, a user interface may be presented to enable a user at the first geolocation110(1) to select one or more of a particular geolocation110or particular proxy access device122to use during testing. The management server(s)118may maintain information about the proxy access devices122, such as geolocation110, availability, cost, type of proxy access device122, and so forth. The management server(s)118may coordinate establishment of a connection between the AUT104and the proxy access device122that was selected.

During testing, the AUT traffic116may be routed through the first network112(1) to the proxy host device120, through the proxy access device122to the second network112(2), and then on to the first network112(1) to ultimately arrive at the destination device114. The AUT traffic116may include outbound application traffic sent from the AUT104to the destination device114and inbound application traffic sent from the destination device114to the AUT104. During operation, the AUT104may direct outbound application traffic to the proxy host device120, which transfers the outbound application traffic to the proxy access device122, which then sends the outbound application traffic to the second network112(2). The second network112(2) may send the outbound application traffic to the destination device114. Inbound application traffic from the destination device114may follow the reverse path. The management server(s)118may collect log data associated with operation of the system, such as information associated with operation of the proxy access device122, packet capture of data transferred by the proxy host device120, and so forth. Log data may also indicate, for a particular instant in time, one or more of: a current page on a website, type of network that the proxy access device122is connected to, quantity of data received, quantity of data transmitted, latency to the destination device114, data throughput, received signal strength, transmit power, cost associated with data transfer on the second network112(2), and so forth. The data may therefore represent the AUT104operating on a real-world second network112(2) at a desired geolocation110(2).

Instead of, or in addition to data determined by the management server(s)118, one or more deployed devices126may provide deployed log data to the management server118. Deployed devices126may include, but are not limited to, smartphones, laptops, tablet computers, embedded devices, wearable computing devices, appliances, automobiles, aircraft, and so forth. A deployed device126may execute the AUT104that incorporates the SDK.

Data determined by operation of the proxy access devices122may be used to generate reports, determine modifications to the AUT104, and so forth. While the AUT104is executing on the proxy access devices122, one or more of the proxy access devices122or the proxy host devices120may display or store proprietary information. For example, it may be desirable to prevent individuals located at the second geolocation110(2) from viewing displays associated with the proxy access devices122, accessing data stored on the proxy access devices122or proxy host devices120, or tampering with the devices themselves. As such, the proxy host devices120and proxy access devices122may be maintained in a secure enclosure102that is configured to limit access to the devices, and in the event of an unauthorized access, cause one or more devices to be locked, deactivated, or delete data from the devices.

FIG.2depicts an implementation of an enclosure102for maintaining devices used to test applications. WhileFIG.2depicts a single enclosure102, in some implementations, multiple enclosures may be stacked, placed side-by-side, mechanically engaged to one another, and so forth. The enclosure102is shown having a generally rectangular shape defined by multiple contiguous or adjoining surfaces, such as a top, a bottom, and multiple edges that define walls of the enclosure102. The enclosure102may include ventilation holes or other types of orifices202to allow for the exchange of ambient air to provide cooling for devices inside the enclosures102. While the orifices202are shown as small holes having a generally round shape, in other implementations, any number of orifices202having any shape may be used. In some implementations, the enclosure102may contain proxy host devices120and proxy access devices122, as well as additional devices, such as power conditioning circuitry, networking devices, power management devices, and so forth. For example, power management devices may include a remote power management device that allows for power to the proxy host devices120, proxy access devices124, or other devices in the enclosure102to be cycled.

The enclosure102is shown having an access control mechanism206. The access control mechanism206may be used to control physical access to the interior of the enclosure102. For example,FIG.2depicts the access control mechanism206as a touchscreen display, which may include a touch sensor for receiving input indicative of a pin number, password, gesture, and so forth. In cases where the access control mechanism206includes or is associated with a display, the access control mechanism206may also be used to present information regarding the status of the enclosure102or one or more of the devices in the enclosure102. In some cases, input to the access control mechanism206may be used to navigate one or more interfaces that present information regarding the enclosure102or one or more of the devices. In other implementations, the access control mechanism206may be configured to receive user input, such as a fingerprint, image data from one or more cameras, audio data from one or more microphones, or other types of input to authorize an attempt to access the interior of the enclosure102. In response to input that corresponds to authorization data indicative of a preselected password, number, gesture, or other type of input, the access control mechanism206may cause actuation of a lock or other type of mechanism used to prevent access to the interior of the enclosure102. For example, the enclosure102may include a lid208, access panel, or other type of closure mechanism that may be opened to access the interior. For example,FIG.2depicts the enclosure102including a lid208that is moveable relative to a base210to open the enclosure102. The closure mechanism may be secured using one or more locks or other types of mechanical, electrical, or magnetic mechanisms, which may be actuated to allow opening of the enclosure102(1) in response to particular input to the access control mechanism206.

For example,FIG.2depicts the enclosure102shown in a closed configuration212and an open configuration214. In response to input to the access control mechanism206that matches a preselected password, number, gesture, or other type of input, a lock may be actuated to allow the lid208of the enclosure102to be moved relative to the base210of the enclosure102, enabling access to the interior. The interior of the enclosure102may contain proxy host devices120, proxy access devices122, other types of devices, and so forth. In some implementations, the proxy host devices120and proxy access devices122may be retained in a tray216within the enclosure102. The tray216may include slots or other types of recessed regions for containing the proxy host devices120and slots for containing the proxy access devices122. For example, the slots of the tray216are shown including three recessed regions for containing proxy host devices120, and three groupings of eight slots, with each grouping of eight slots for containing proxy access devices122. Each grouping of slots for retaining proxy access devices122is shown positioned in alignment with a respective slot for containing a proxy host device120. Each of up to eight proxy access devices122placed in one of the slots may be engaged with the corresponding proxy host device120positioned in the aligned slot. For example, one or more of the slots that retain a proxy access device122and one or more of the slots that retain proxy host devices120may include a hole through which a connector, such as a USB cable, may be routed to engage proxy access devices122to a proxy host device120.

In some implementations, the tray216may include one or more status devices218. The status device(s)218may include a controller, system-on-a-chip, or other computing device with a display device to provide output to an operator. For example, a status device218may be configured to present information indicative of the status a proxy host device120, the status of individual proxy access devices122, and so forth. WhileFIG.2depicts a single status device218, other implementations may include multiple status devices218such as one status device218associated with each proxy host device120. In some implementations the status device218may itself initiate performance of diagnostic operations or other operations associated with the devices within the tray216. In some implementations, the status device218may function as an access control mechanism206. For example, the status device218may be configured to receive user input to authorize an attempt to add or remove a proxy host device120or proxy access device122from the tray216. Continuing the example, if user input that corresponds to authorization data indicative of a valid password, lock code, or other type of authorization is received at the status device218, a proxy host device120may provide a signal to one or more of the proxy access devices122to deactivate a security application. If user input that corresponds to the authorization data, indicating a valid access attempt, is not received, disconnection of a proxy access device122from a proxy host device120or other device within the enclosure102may cause the security application to lock, deactivate, or delete data associated with the proxy access device122. Similar authorization methods may also be used to control removal of proxy host devices120from the enclosure102or disengagement of proxy host devices120from other devices. In some cases, the authorization data may include types of inputs that expire. For example, a password may be generated at a first time, and at a time that input is received, a second time may be determined. If the interval between the first time and the second time is less than a threshold length of time, the input may correspond to a valid access attempt. However, if the interval is greater than a threshold length of time, the attempt to access the enclosure102may not be authorized. In other cases, authorization data may be modified manually or automatically. For example, after a particular password or lock code is used a selected number of times, that password or lock code may be removed from the authorization data.

Similarly, in some implementations, the access control mechanism206may be in communication with one or more of the devices within the enclosure102. For example, in response to valid input to the access control mechanism206, a security application, such as a “watchdog” application, may be deactivated or suspended on one or more devices to enable removal or modification of the devices by a user accessing the enclosure102. However, if the access control mechanism206determines opening of a lid208or other closure mechanism, deformation of a surface of the enclosure102, impact or movement of the enclosure102beyond a threshold value, and so forth, a signal may be provided to one or more devices in the enclosure102to cause the devices to be locked, deactivated, or to cause data on the devices to be deleted. In other implementations, an enclosure102may have shapes other than those shown inFIG.2and may use closure mechanisms other than a lid208to control access to the interior.

For example,FIG.3depicts an implementation of an enclosure102for maintaining devices used to test applications. Specifically,FIG.3shows a top view and a bottom view of the enclosure102. The enclosure102is shown having a generally elongated rectangular shape, with orifices202to allow for the exchange of ambient air to provide cooling for devices inside the enclosure102. As described with regard toFIG.2, orifices202may have any shape and any number of orifices202may be used. The enclosure102is also shown having one or more through holes302for accommodating the passage of cables, such as power conductors, network cables, and so forth. In some implementations, through holes302may be used to enable visualization of devices or other components within the enclosure102, placement of access control mechanisms206, and so forth. One or more access panels304may be used to access the interior of the enclosure102. As described with regard toFIG.2, one or more access control mechanisms206may be used to control access to the interior of the enclosure102, such as by receiving and validating input prior to enabling opening of the panel304or another closure mechanism. For example, an access control mechanism206may be associated with one or more locks or other mechanical elements that prevent opening of the panel304.

WhileFIGS.2and3depict example enclosures102that may be used to retain devices, other types of enclosures102having other shapes and dimensions may be used. In some implementations, the enclosure102ofFIG.2, the enclosure102ofFIG.3, or other types of enclosures102may be made from one or more plastic materials, such as fire-retardant plastic, that may provide less interference to the transmission and receipt of signals when compared to an enclosure102formed from metal.

FIG.4Adepicts a cut-away view of the enclosure102ofFIG.3showing a tray216that may be used to support devices used to test applications. For example, one or more trays216may be placed within an enclosure102or may be integral with or formed in the interior of the enclosure102. The tray216may be configured to retain proxy host devices120, proxy access devices122, or other devices associated with the system100. In other implementations, other devices may be supported. For example, one or more proxy host devices120may be located underneath the tray216or elsewhere, while USB hubs are held by the tray216. The tray216may comprise one or more of plastic, ceramic, metal, cardboard, and so forth. For example, the tray216may comprise ABS plastic.

A first set of slots402(1) within the tray216may retain proxy host devices120. For example,FIG.4Adepicts the tray216including three rectangular slots402(1). A proxy host device120may be placed in one or more of the slots402(1). A second set of slots402(2) within the tray216may retain proxy access devices122. For example,FIG.4Adepicts the tray216including eight rectangular slots402(2) extending across the width of the tray216in a direction generally perpendicular to the first set of slots402(1). The width of the slots402(2) may enable each slot402(2) to accommodate devices having a variety of widths. For example, a slot402(2) may have a width sufficient to accommodate a single tablet, three smartphones, and so forth. In other implementations, other numbers and configurations of slots402may be used. For example, the tray216ofFIG.2is shown having three groupings of eight slots402(2), with each grouping of eight slots402(2) being positioned in alignment with a respective slot402(1) for containing a proxy host device120. Proxy access devices122placed in one of the slots402(2) may be engaged with a corresponding proxy host device120positioned one of the slots402(1). For example, one or more of the slots402(2) that retain a proxy access device122and one or more of the slots402(1) that retain proxy host devices120may include a hole through which a connector, such as a USB cable, may be routed to engage proxy access devices122to a proxy host device120.

In some implementations, the tray216or enclosure102may include one or more recessed regions404, through holes302, or other features, which in some implementations may be used to retain status devices218. Status device(s)218may include a controller, system-on-a-chip, or other computing device with a display device to provide output to an operator. For example, a status device218may be configured to present information indicative of the status of a proxy host device120, the status of individual proxy access devices122, and so forth.FIG.4Adepicts the recessed region404including a rectangular region extending across the width of the tray216, with through holes302that may accommodate the passage of cables or other connectors. In the implementation shown inFIG.4A, the recessed region404may accommodate three status devices218, each of which may be associated with a single proxy host device120and a group of associated proxy access devices122. In other implementations, a single status device218may be associated with each device within the tray216, or other numbers of status devices218may be used. In other implementations, trays216having other shapes, numbers and arrangements of slots402, and numbers and arrangements of status devices218or other devices may be used. For example,FIGS.5-8depict other possible implementations of trays216.

FIG.4Bdepicts a second cut-away view of the enclosure102ofFIGS.3and4Ashowing a shelf406positioned above the tray216. In some implementations, proxy host devices120, proxy access devices122, and status devices218may be supported by the tray216, while other devices, such as power sources, power conditioning circuitry, USB hubs, and so forth may be placed on the shelf406. The shelf406may include one or more through holes302that may accommodate passage of cables or other connectors that may engage devices on the shelf406with other devices in the enclosure102, such as devices supported by the tray216.

FIG.5depicts an implementation of a tray216having a first set of slots402(1) that enable vertical orientation of proxy host devices120, which may enable the tray216to have a reduced length or width when compared to trays216that accommodate horizontal placement of proxy host devices120. The tray216ofFIG.5is also shown having three grouping of eight slots402(2) for retaining proxy access devices122. In some implementations, each grouping of slots402(2) may have access holes to enable engagement of the devices within the slots402(2) to a corresponding proxy host device120in the slot402(1) aligned with the grouping of slots402(2). The tray216is also shown retaining three status devices218. In some implementations, each status device218may indicate the status of or control one or more functions of a single proxy host device120or group of proxy access devices122. In other implementations, the regions of the tray216that contain the status devices218may contain USB hubs for engagement with the proxy host device120, proxy access devices122, or other devices within the enclosure102.

FIG.6depicts a front view of an implementation of a tray216that may support proxy host devices120, proxy access devices122, status devices218, or other devices. In some implementations, the tray216may include a single piece of material. In other implementations, the tray216may include multiple pieces of material that have been joined using mechanical fasteners, welding, adhesives, mechanical fit, and so forth.

The tray216may include one or more sets of orifices202, which may function as vents to facilitate cooling of devices that are located under or within the tray216. While the orifices202are shown as generally rectangular slits, in other implementations, orifices202having other shapes may be used. The tray216is also shown including a first set of slots402(1) that may retain proxy host devices120or other types of devices. The orientation of the slots402(1) may enable proxy host devices120to be maintained in a vertical orientation. A second set of slots402(2) may be used to retain proxy access devices122or other types of devices. In the implementation shown inFIG.6, the slots402(2) extend substantially across the width of the tray216. The length of the slots402(2) may allow the slots402(2) to accommodate proxy access devices122of different widths, such as smart phones, tablets, and so forth. In some cases, a single slot402(2) may accommodate multiple devices adjacent to one another. For example, a single slot402(2) having a length sufficient to accommodate a tablet may be used to accommodate multiple smartphones positioned side-by-side.

FIG.6also depicts the tray216including multiple recessed regions404, in which status devices218, USB hubs, or other types of devices may be placed. The recessed regions404may each include a through hole302, which may accommodate passage of a connector, such as a cable engaging a status device218to a proxy host device120.

FIG.7depicts a back view of the tray216ofFIG.6. In the view shown inFIG.7, through holes302positioned adjacent to the slots402(1) for containing the proxy host devices120are visible. The through holes302may provide a passage for cables and other connectors between the interior of the tray216and the exterior of the tray216. For example, cables passing through the through holes302may engage a device within an adjacent slot402(1). In some cases, cables passing through the through holes302may engage a device within a slot402(1) with another device within the tray216or a device positioned outside of the tray216. WhileFIG.7depicts the through holes302as generally round apertures, in other implementations, the through holes302may include slits or apertures having other shapes or sizes.

FIG.8depicts an underside view of the tray216shown inFIGS.6and7. In the view shown inFIG.8, the underside of the first set of slots402(1), the second set of slots402(2), and three recessed regions404are visible. The second set of slots402(2) is shown having a series of through holes302that may function as cable access holes to provide passage for cables that engage a proxy access device122within the slot402(2) to a proxy host device120. WhileFIG.8shows the slots402(2) each including multiple spaced through holes302, in other implementations, a slit may be provided in one or more of the slots402(2) in addition to or in place of the through holes302.

An interior volume802may be defined by the underside of the tray216and a base surface, such as a base210of an enclosure102into which the tray216is placed. Devices such as power supplies for the proxy access devices122, proxy host devices120, or other devices in the tray216may be placed within the interior volume802. The orifices202may provide for airflow to the interior volume802to facilitate cooling. In some implementations active cooling may be utilized, such as by using a fan or blower to force air through the interior volume802. In some cases, the interior volume802may contain a fan, blower, or other cooling device.

FIG.9is a block diagram900illustrating one implementation of interactions between access control mechanisms206, proxy host devices120, and proxy access devices122of an enclosure102. As described with regard toFIGS.1-8, an enclosure102may be used to retain proxy host devices120and proxy access devices122during testing of an AUT104. Other types of devices may be retained in an enclosure102for other purposes as well. Access control mechanisms206may be used to limit access to the interior of the enclosure102. For example, user input902may be provided to an access control mechanism206in conjunction with an attempt to access the interior of the enclosure102. Continuing the example, user input902may include entry of a pin number, password, gesture input, or other types of input using an input device associated with the access control mechanism206. An authorization module904associated with the access control mechanism206may determine correspondence between the user input902and authorization data906that associates inputs with control actions. For example, the authorization data906may indicate valid passwords or other types of input, and correspondence between the user input902and the authorization data906may result in performance of a control action that includes actuating a closure mechanism to provide access to the interior of the enclosure102.

The access control mechanism206may be in communication with one or more proxy host devices120within the enclosure102. In some implementations, the access control mechanism206may communicate with one or more proxy host devices120via wired connections908(1), such as a cable that engages a USB port of the proxy host device(s)120. Each proxy host device120may in turn communicate with one or more proxy access devices122, in some implementations via wired connections908(2). As described previously, in some implementations, an enclosure102may contain three proxy host devices120, each of which may communicate with eight proxy access devices122. For example,FIG.9depicts a first proxy host device120(1) that communicates with eight proxy access devices122(1-8), a second proxy host device120(2) that communicates with eight proxy access devices122(9-16), and a third proxy host device120(3) that communicates with eight proxy access devices122(17-24). Each proxy host device120may include a control module910that may be used to determine commands or other types of signals to be sent to one or more of the proxy access devices122. Each proxy host device120may also include one or more communication modules912for providing commands and other types of signals to proxy access devices122, and for receiving data and other signals from the access control mechanism206. Communication modules912may be configured for communication via the wired connections908. In some implementations, communication modules912may also be configured for wireless communication. For example, if a disconnection of a wired connection908is determined, a proxy host device120may provide a wireless signal to one or more of the proxy access devices122to lock, deactivate, or delete data from the proxy access device122. Wireless signals may include signals provided via a cellular network, a local area network, or other types of wireless communication between the proxy host device120and a proxy access device122. In some implementations, the enclosure102may include a local area network accessible to one or more of the access control mechanism206, the proxy host devices120, or the proxy access devices122to enable signals to be exchanged between devices within the enclosure102in the event of a disconnection. The communication modules912may establish communications using one or more communication interfaces, such as network interfaces. Communication interfaces may enable computing devices, or components of computing devices, to communicate with other computing devices or components of the other computing devices.

Continuing the example, one or more of the proxy access devices122may include a security module914. In one implementation, the security module914may include an application executing on the proxy access devices122, such as a watchdog application. In response to a signal from a proxy host device120, the security module914may cause an associated proxy access device122to enter a locked state, deactivate, delete data, and so forth. In some implementations, the security module914may lock, deactivate, or delete data from a proxy access device122without receiving a signal from a proxy host device120, such as in response to disconnection of a wired connection908, receipt of data indicating unauthorized access from the access control mechanism206, or a lack of receipt of a periodic or continuous signal from the proxy host device120, such as a “ping” or a “heartbeat” signal. Additionally, in some implementations, a proxy host device120may also include a security module914to lock, deactivate, or delete data from a proxy host device120in response to a signal from the access control mechanism206indicating an unauthorized access to the enclosure102or a disconnection of a wired connection908. Proxy access devices122may also include test modules916for testing an AUT104or other hardware or software.

The enclosure102may include one or more power sources918that may be positioned within or external to the enclosure102. For example,FIG.9depicts a one or more first power sources918(1) that may provide power to the access control mechanism206using a first power connection920(1) and one or more of the proxy host devices120using a second power connection920(2).FIG.9also depicts one or more second power sources918(2) that may provide power to one or more of the proxy access devices122using a third power connection920(3). The arrangement of power sources918and power connections920shown inFIG.9is a single possible implementation, and any number of power sources918may provide power to any number of devices using any number of power connections920. For example, multiple power sources918may provide power to a single device, a single power source918may provide power to multiple devices, and so forth. In some implementations, the access control mechanism206or the proxy host device(s)120may be configured to provide a signal to one or more other devices if disconnection of a power connection920is determined. For example, in response to disconnection from a power source918, a proxy host device120may provide a signal to a proxy access device122to cause a security module914to lock, deactivate, or delete data from the proxy access device122. A proxy host device120may also be locked, deactivated, or data may be deleted from a proxy host device120in response to disconnection of a power connection920. In some implementations, a security module914may cause a proxy access device122to lock, deactivate, or delete data in response to disconnection of a power connection920.

In operation, the access control mechanism206may receive user input902associated with an attempt to access the interior of the enclosure102. Based on correspondence between the user input902and the authorization data906, the authorization module904may generate an authorization determination922and provide the authorization determination922to the proxy host device(s)120. Each proxy host device120that receives the authorization determination922may provide a security command924to the proxy access devices122associated with the proxy host device120. If the user input902corresponds to the authorization data906, the authorization determination922may indicate a valid attempt to access the interior of the enclosure102. In such a case, the security commands924provided to the proxy access devices122may suspend or disable the security modules914to enable access to the proxy access devices122, such as to add or remove devices from the enclosure102or access data stored on the devices. In some implementations a log or other type of record indicating the valid access attempt may be generated. The log may include information regarding the state of devices within the enclosure102before and subsequent to the access attempt. For example, if one or more devices are removed from the enclosure102during the valid access, the log may associate removal of the devices with the user that accessed the enclosure102.

If the access control mechanism206determines an unauthorized attempt to access the enclosure102, the authorization determination922and security commands924may indicate the unauthorized access attempt. In response to the unauthorized access attempt, one or more proxy host devices120or proxy access devices122may be locked, deactivated, or data may be deleted from the devices. Detection of an unauthorized access attempt may include determining that a closure mechanism of the enclosure102has been opened without providing user input902that corresponds to the authorization data906. Detection of an unauthorized access attempt may also include determining disconnection of a wired connection908between devices or a power connection920between a device and a power source918. In some implementations, the enclosure102may include one or more sensors926, such as a motion sensor, force sensor, accelerometer, gyroscope, position sensor, an electrical mesh integrated within one or more surfaces of the enclosure102, and so forth. The sensor(s)926may generate sensor data928indicative of an attempt to access the enclosure102. For example, the sensor(s)926may detect destruction or deformation of a wall of the enclosure102, an impact or other force that contacts the enclosure102, movement or tilting of the enclosure102toward one or more threshold positions or at a rate that exceeds a threshold rate, and so forth. In response to the sensor data928, the access control mechanism206may generate an authorization determination922indicative of an unauthorized access attempt. In other implementations, one or more of the proxy host devices120or proxy access devices122may perform a control action, such as locking, deactivating, or deleting data from a device, in response to detecting a disconnection of a wired connection908or power connection920, or in response to sensor data928, independent of signals from the access control mechanism206or other devices.

FIG.10is a flow diagram1000illustrating an implementation of a method for controlling access to devices stored in an enclosure102. At1002, communication may be established between an access control mechanism206, a proxy host device120, and a proxy access device122within an enclosure102. In some implementations, communication may be established using wired connections908, such as by engaging a cable between a USB port of a proxy host device120and one or more proxy access devices122. In other implementations, communication may include use of one or more wireless protocols. In still other implementations, devices within the enclosure102may communicate using a variety of methods. For example, a proxy access device122and proxy host device120may be configured to communicate using both a wired connection908and a wireless protocol.

At1004, the access control mechanism206may determine an unauthorized attempt to access the interior of the enclosure102. An unauthorized access attempt may include actuation of a closure mechanism of the enclosure102in the absence of user input902that corresponds to authorization data906. An unauthorized access attempt may also include disconnection of a wired connection908or disconnection of a power connection920between a device and a power source918. An unauthorized access attempt may additionally be determined based on sensor data928. For example, one or more sensors926in communication with the access control mechanism206or one or more devices within the enclosure102may detect an impact, destruct, deformation, movement, a rate of movement, or a change in orientation that may indicate an unauthorized access attempt. As another example, the sensor(s)926may include one or more cameras that may determine the presence of an individual within a threshold distance of the enclosure102or an access attempt performed by the individual. As yet another example, the sensors926may include one or more microphones that may determine audible sound having one or more characteristics indicative of an access attempt.

At1006, an instruction may be sent from the access control mechanism206to the proxy host device120indicating the unauthorized access attempt. For example, an access control mechanism206may send a signal to one or more proxy host devices120via a wired connection908or a wireless method of communication. In other implementations, a proxy host device120may detect an unauthorized access attempt independent of the access control mechanism206, such as by receiving sensor data928or detecting disconnection of a wired connection908or power connection920directly. In still other implementations, a proxy host device120may provide a signal to the access control mechanism206, other proxy host devices120, or one or more proxy access devices122indicative of an unauthorized access attempt. For example, in response to determining a disconnection of a power connection920or wired connection908, a proxy host device120may provide a signal to other devices.

At1008, an instruction may be sent from the proxy host device120to the proxy access device122to lock the proxy access device122or delete data from the proxy access device122. For example, in response to determining the unauthorized access attempt, either independently or from the access control mechanism206, a proxy host device120may provide a security command924to a proxy access device122. In other implementations, a proxy access device122may receive an instruction from the access control mechanism206, sensor data928from one or more sensors926, or may determine an access attempt directly, such as by detecting disconnection of a wired connection908or power connection920.

In some implementations, the instructions described at1006and1008may be provided using wired connections908or using one or more wireless protocols. For example, in response to determining disconnection of a wired connection908between a proxy host device120and a proxy access device122, the proxy host device120may provide an instruction to lock or delete data from the proxy access device122using a wireless communication protocol.

At1010, in response to the instruction from the proxy host device120, the proxy access device122may be locked, data may be deleted from the proxy access device122, or the proxy access device122may both be locked and have data deleted therefrom. At1012, in response to the instruction from the access control mechanism206, the proxy host device120may be locked, data may be deleted from the proxy host device120, or the proxy host device120may both be locked and have data deleted therefrom. As described previously, in other implementations, the proxy host devices120and proxy access devices122may be locked or have data deleted therefrom independent of instructions received from other devices.

In some implementations, a proxy access device122may determine an unauthorized access attempt in the absence of a signal from a proxy host device120or access control mechanism206. For example, at1014, a security application executing on the proxy access device122, such as a security module914described with regard toFIG.9, may determine an unauthorized attempt to access the proxy access device122. Continuing the example, the security application may include a “watchdog” application that receives periodic or continuous signals from a proxy host device120or access control mechanism206. In response to input indicative of an authorized access attempt, the security application may be suspended, deactivated, or may permit access to or removal of the proxy access device122. However, if an authorized access attempt does not occur, the security application may detect a disconnection of the proxy access device122from the proxy host device120, access control mechanism206, or power source918. Alternatively, the proxy access device122may determine an absence of an expected signal from the proxy host device120or access control mechanism206. In response to this determination, the security application may cause the proxy access device122to perform one or more functions. For example, at1016, the security application may be used to lock the proxy access device122or delete data from the proxy access device122.

FIG.11Ais a diagram1100depicting an implementation of an input simulation device1102that may be used to provide simulated touch input to devices stored within an enclosure102. For example, a proxy access device122within the enclosure102may include a touch sensor, such as a touchscreen display. In some cases, performance of certain types of operations using the proxy access device122may require providing touch input or simulated touch input to the touch sensor. For example, a particular type of smartphone may require touch input to the touch sensor, such as entry of a pin number, password, or gesture input, to unlock the smartphone when it is locked, before instructions may be provided to the smartphone to cause performance of other operations. As another example, testing the functionality of a proxy access device122under certain conditions may include performing operations using simulated touch input to the touch sensor. To enable input to be provided to a touch sensor of a device within the enclosure102, the input simulation device1102may be placed in association with the touch sensor, such as in contact with or proximate to the touch sensor.

For example,FIG.11Adepicts the input simulation device1102including a base member1104, such as a printed circuit board (PCB). PCBs may include flexible circuit boards or rigid fiberglass circuit boards. In other implementations, other substrate materials may be used. The base member1104is shown having a generally planar, rectangular shape. For example, the base member1104may have a shape that corresponds to the shape of a rectangular touchscreen display of a smartphone or tablet. One or more conductive members1106may be positioned on the base member1104. Each conductive member1106may be configured to cause a change in capacitance to a region of a capacitive touch sensor proximate to the conductive member1106, upon receipt of an electrical current, voltage, or other type of input, which may simulate the effect of a human touch to the region of a capacitive touch sensor. WhileFIG.11Adepicts the input simulation device1102having sixteen conductive members1106, any number of conductive members1106may be included on an input simulation device1102. For example, an input simulation device1102may include a single conductive member1106used to provide touch or tap inputs. In some implementations, multiple conductive members1106may be arranged in a grid or array, such as by providing the input simulation device1102with rows and columns of conducive members1106. Use of conductive members1106that are spaced closely together may enable the simulation of precise touch inputs to a touch sensor, such as touch inputs to user-selected (e.g., arbitrary) locations, random locations, and so forth. In some implementations, multiple conductive members1106may be used to simulate a single touch input. For example, four small conductive members1106that are placed closely together may correspond to the size of a touch input provided by a single finger. Use of an input simulation device1102having conductive members1106that are smaller than the size of a single touch input may enable touch inputs to be provided with greater resolution.

In one implementation, the base member1104may be placed over the touch sensor of a device such that one or more edges of the base member1104are within a threshold distance of corresponding edges of the touch sensor. The base member1104and the position of the conductive members1106may be arranged such that placing the base member1104over the touch sensor in this manner may position one or more of the conductive members1106over or proximate to specific regions of the touch sensor. For example,FIG.11Adepicts a first set of conductive members1106(1) positioned in locations that may correspond to the locations of a numeric keypad that may be presented on a touchscreen display. In other implementations, other arrangements of conductive members1106may be used, such as arrangements that corresponds to letters or other characters of a keyboard presented on a touchscreen display, the position of icons, buttons, or other controls within the display, or the position of one or more capacitive buttons or other capacitive controls on a device. WhileFIG.11Adepicts a rectangular input simulation device1102, the input simulation device1102may have any shape or dimensions. For example, an input simulation device1102may include a base member1104that is smaller than the touch sensor over which it is placed, larger than the touch sensor, a shape other than a rectangular, such as a line, an L shape, a triangular shape, a round shape, and so forth.

In some implementations, conductive members1106may be arranged to simulate a gesture input, such as a swipe gesture by a user. For example,FIG.11Adepicts a second set of conductive members1106(2) arranged in a horizontal line. The conductive members1106(2) may cause a change in capacitance that simulates a left-to-right swipe gesture by first actuating the leftmost conductive member1106(2), then actuating the adjacent conducive member1106(2) while ceasing actuation of the first conducive member1106(2), and progressing in a sequential manner toward the right-most conductive member1106(2). Actuating the conductive members1106(2) in the opposite order may simulate a swipe gesture that moves from right to left. A third set of conductive members1106(3) may be arranged in a vertical line, such that sequentially using the conductive members1106(3) to cause a change in capacitance may simulate a swipe gesture that moves from top to bottom or from bottom to top.

The input simulation device1102may include one or more connectors1108, such as a USB port, which may be used to couple the input simulation device1102to a controller or one or more other devices. In other implementations, the input simulation device1102may include a controller. For example, the base member1104may include a circuit board or may include wiring, circuitry, or other conductive elements that enable electrical communication between a controller coupled to the base member1104and one or more of the conductive members1106. A controller may selectively cause individual conductive members1106or subsets of conductive members1106to cause a change in capacitance to regions of a touch sensor to provide simulated touch input to the regions. The input simulation device1102may also include one or more apertures1110, which may include apertures in the base member1104. Including apertures1110within the base member1104may reduce the capacitance provided to a touch sensor by the input simulation device1102itself when none of the conductive members1106are actuated. Apertures1110may also facilitate alignment between the input simulation device1102and the touch sensor of a device within the enclosure. For example, portions of the touch sensor or other parts of the device may be visible through an aperture1110when positioning the base member1104over or otherwise in association with the touch sensor.

In other implementations, other configurations of conductive members1106may be used. For example,FIG.11Bis a diagram1114depicting an implementation of an input simulation device1102with rows and columns of conductive members1106spaced closely together in a grid arrangement to enable simulation of precise touch inputs to a large number of locations on a touch sensor. For example, the input simulation device1102is shown having a base member1104with eight rows and eight columns of conductive members1106arranged thereon. In other implementations, other numbers and arrangements of conductive members1106may be used. The depicted arrangement of conductive members1106may enable simulated touch input to any location or combination of locations of a touch sensor that are proximate to a conductive member1106to be provided. In some cases, input may be provided using multiple conductive members1106in succession, such as to simulate a horizontal, vertical, or diagonal swipe gesture, a pinch-zoom gesture, or gesture inputs having other shapes.

Input simulation devices1102, such as those shown inFIG.11A,FIG.11B, or other configurations of input simulation devices1102, may be secured to a device that includes a touch sensor using one or more fasteners1112or adhesives, a force or interference fit, and so forth. Additionally, in some implementations, an input simulation device1102may be associated with a housing configured to engage the input simulation device1102to an associated device having a touch sensor.

FIG.12is a front view of a housing1202that may retain an input simulation device1102in association with a proxy access device122within an enclosure102.FIG.13is a back view of the housing1202ofFIG.12. In one implementation, the housing1202may have a generally rectangular shape. The housing1202may be used to retain a proxy access device122having at least one dimension smaller than a dimension of the housing1202. For example, a smartphone may have a rectangular shape with dimensions smaller than the rectangular shape of the housing1202, enabling the smartphone to be placed within the housing1202. The housing1202may retain the proxy access device122, proximate to an input simulation device1102, such as the input simulation device1102shown inFIG.11. In other implementations, the housing1202may have other shapes to accommodate other devices and input simulation devices1102.

The housing1202may include a front surface1204having a first side surface1206(1) and a second side surface1206(2) extending from opposite ends of the front surface1204. A first back surface1208(1) may extend from the first side surface1206(1), such that a first end of the first side surface1206(1) is contiguous with the front surface1204and a second end of the first side surface1206(1) is contiguous with the first back surface1208(1). A second back surface1208(2) may similarly extend from the second side surface1206(2). The front surface1204, side surfaces1206, and back surfaces1208may define a generally rectangular volume that may contain a proxy access device122or another type of device. For example, the front of a device, such as the portion of a device that includes a touchscreen display, may face the front surface1204, while the side edges of the device may each be proximate to a respective side surface1206of the housing1202. A lower edge of the device may be proximate to a first shoulder1210(1) within the housing1202.

The housing1202may also include a second shoulder1210(2) formed in the interior thereof to define a space that may contain the input simulation device1102. For example, the input simulation device1102may be positioned within the housing1202such that the edges of the input simulation device1102are proximate to the edges of the shoulder1210(2). Placement of the input simulation device1102in this manner may position the input simulation device1102between a proxy access device122that rests on the first shoulder1210(1) and the front surface1204of the housing1202.

A third shoulder1210(3) is shown formed on the exterior of the housing1202, in the front surface1204, which may facilitate placement of the housing1202within a slot402of a tray216or other complementary volume within an enclosure102. For example, a lower portion of the housing1202may be inserted into a volume formed in the enclosure102such that the third shoulder1210(3) abuts or is proximate to a surface of the enclosure102adjacent to the volume into which the lower portion of the housing1202is placed.

The housing1202may include various apertures1110formed therein. For example, a first aperture1110(1) and a second aperture1110(2) are shown extending through the front surface1204. The apertures1110may accommodate the position of input and output devices associated with a proxy access device122within the housing1202. For example, the first aperture1110(1) may accommodate the position of a camera, while the second aperture1110(2) may accommodate the position of one or more microphones or speakers of the device.FIGS.12and13also depict multiple apertures1110(3) formed in a lower end of the housing1202, which may accommodate the passage of cables and other types of connectors that may engage the input simulation device1102or proxy access device122within the housing1202. In some implementations, one or more of the apertures1110may define a contiguous space with one or more other apertures1110. For example,FIG.13depicts a lower aperture1110having an interior space that is contiguous with the space behind the second aperture1110(2). Contiguous apertures1110may enable cables or other objects to extend through multiple apertures1110, or may enable a portion of a proxy access device122or input simulation device1102within the housing1202to be engaged from different sides or angles, which in some cases may enable a housing1202to accommodate different types and shapes of proxy access devices122and input simulation devices1102. Additionally, in some implementations, the apertures1110(3) may be sized to prevent passage of a portion of a cable or other conductor therethrough. For example, the aperture1110(3) may permit passage of a wire portion of a cable but prevent passage of a connector portion of a cable, such that the connector portion is supported by the shoulder1210(1). In such a case, when a proxy access device122or other device that engages a cable extending through an aperture1110(3) is disconnected from the cable, the connector portion of the cable may remain accessible and supported by the shoulder1210(1) rather than passing through the aperture1110(3). Supporting the cable in this manner may enable devices to be removed, exchanged, added, and replaced efficiently by engaging devices to the supported portions of the cables.

FIG.14is a diagram1400depicting one implementation of an arrangement of a proxy access device122, input simulation device1102, and housing1202. As described with regard toFIGS.12and13, the housing1202may define an interior space for containing a proxy access device122such that the touch sensor1402of the proxy access device122faces the front surface1204of the housing1202. The input simulation device1102may be positioned between the touch sensor1402and the front surface1204such that conductive members1106of the input simulation device1102are positioned in association with selected locations of the touch sensor1402. The edges of an interior shoulder1210(2) within the housing1202may define a space that contains the input simulation device1102. The side surfaces1206of the housing1202may limit movement of the side edges of the proxy access device122, while the back surfaces1208may limit movement of the proxy access device122away from the front surface1204.

FIG.15is a flow diagram1500illustrating an implementation of a method for providing simulated touch input to a touch sensor1402of a device stored in an enclosure102. At1502, an input simulation device1102may be positioned adjacent to a touch sensor1402of a proxy access device122within an enclosure102to align conductive members1106of the input simulation deice1102with respective locations of the touch sensor1402. For example, as described with regard toFIGS.12-14, an input simulation device1102may be mechanically engaged with a surface of a proxy access device122to position conducive members1106proximate to selected locations of a touch sensor1402. In some implementations, a housing1202may retain the input simulation device1102and proxy access device122in proximity to one another. For example, the input simulation device1102may be positioned between a front surface1204of the housing1202and a touch sensor1402of the proxy access device122. The position of internal shoulders1210, side surfaces1206, back surfaces1208, or other features of the housing1202may facilitate alignment between the conductive members1106of the input simulation device1102and selected locations of the touch sensor1402.

At1504, a signal may be provided to a conductive member1106of the input simulation device1102to cause a change in capacitance of a region of the touch sensor1402proximate to the conductive member1106. The change in capacitance may simulate touch input to one or more locations of the touch sensor1402. In some implementations, touch input may be provided using a single conductive member1106to simulate a single tap, short press, long press, or other type of touch input provided to a single location of the touch sensor1402. Touch input may also be simulated at locations corresponding to independent, capacitive buttons. For example, a smartphone may include a touchscreen positioned adjacent to a separate capacitive “home” button. In some cases, the capacitance may be changed multiple times, such as to simulate a double-tap gesture or other type of pattern that includes tap gestures. In other implementations, touch input may be provided using multiple conductive members1106sequentially, such as to simulate a swipe gesture or a gesture input having a selected shape, or to selectively provide tap inputs to locations of the touch sensor1402corresponding to letters, numbers, icons, or other controls, such as to enter a password. In still other implementations, touch input may be provided using multiple conductive members1106simultaneously, such as to simulate gestures that may utilize multiple digits, such as a pinch-to-zoom gesture, a tap or swipe gesture using multiple fingers, or other types of multi-touch gestures.

At1506, a change in an access state of the proxy access device122from a locked state to an unlocked state may be determined. For example, the simulated touch input provided using the conductive members1106may be used to unlock a proxy access device122so that other operations may be performed using the proxy access device122by sending signals to the device. In other implementations, simulated touch input may be used to perform other operations using the proxy access device122besides changing the access state of the device.

At1508, an instruction may be sent to the proxy access device122using a proxy host device120. For example, after causing the proxy access device122to transition to an unlocked access state, the proxy access device122may be controllable to perform various operations using control signals, software, and so forth. In other implementations, the proxy access device122may perform operations independent of instructions from a proxy host device120, or the proxy access device122may receive instructions from other sources.

FIG.16is a block diagram1600illustrating one implementation of interactions between a Bluetooth controller1602, a proxy access device122, and a proxy host device120. As described previously, in some implementations, a control device, such as a Bluetooth controller1602may be retained in an enclosure102with one or more proxy host devices120or proxy access devices122. The Bluetooth controller1602may establish Bluetooth communication links1604with one or more proxy access devices122. The proxy access devices122may then exchange Bluetooth data1606via Bluetooth communication links1604with the Bluetooth controller1602when testing an AUT104or for other purposes. For example, the Bluetooth controller1602may simulate a particular input or output device for exchanging Bluetooth data1606with the proxy access device122. Continuing the example, the Bluetooth controller1602may simulate the presence of a set of Bluetooth headphones or a Bluetooth speaker in communication with the proxy access device122that receives Bluetooth data1606from the proxy access device122. Test data indicative of the transmission of Bluetooth data1606may be generated based on the transmission of the Bluetooth data1606from the proxy access device122to the Bluetooth controller1602without outputting audio or generating other types of output based on the transmitted Bluetooth data1606. For example, when generating test data indicative of the transmission of Bluetooth data1606, neither the proxy access device122nor the Bluetooth controller1602may generate or output audio. Analysis of the transmission of Bluetooth data1606using a proxy access device122, proxy host device120, or Bluetooth controller1602, without causing audio output to be generated, or by suppressing generation of audio, may prevent unauthorized individuals from determining the data being exchanged or tested by overhearing audio output. For example, preventing the output of audio may prevent sounds that may reveal the data being exchanged from being overheard by individuals proximate to the enclosure102. WhileFIG.16depicts the proxy access device122transmitting Bluetooth data1606to the Bluetooth controller1602via the communication link1604, in other implementations, the Bluetooth controller1602may function as a source of Bluetooth data1606for the proxy access device122, such as by simulating a microphone or other audio data source, and may transmit Bluetooth data1606to the proxy access device122. For example, test data indicative of the receipt of Bluetooth data1606by the proxy access device122may be generated.

In some implementations, the Bluetooth controller1602may be used to control the sample rate, the transmit power, the channel, the encryption, or other characteristics associated with the transmission of the Bluetooth data1606or other data exchanged with the Bluetooth controller1602. The Bluetooth controller1602may also be used to control a Bluetooth mode of the proxy access device122and the format or other characteristics of data exchanged with the Bluetooth controller1602. In some cases, the sample rates, data formats, and other characteristics of different Bluetooth devices may be incompatible. For example, the sample rate or format used by a Bluetooth headset may not be compatible with the sample rate or format associated with the USB input of a computing device. Use of the Bluetooth controller1602to convert between various sample rates and other data characteristics may enable the exchange of data between various types of devices to be tested, simulating a variety of compatibility and interoperability scenarios. In some cases, a rate determination module1608, which may include a sample rate converter, may be used to modify the sample rate of data exchanged between the Bluetooth controller1602and a proxy access device122and between the Bluetooth controller1602and a proxy host device1602. For example, a communication module912(1) of the Bluetooth controller1602, such as a Bluetooth transceiver, may receive Bluetooth data1606from the proxy access device122. The received data may be transmitted, as serial data1607, to a rate determination module1608of the Bluetooth controller1602. Serial data1607may include data having a format that is interoperable with the Bluetooth controller1602, such as the I2S serial bus interface standard. The rate determination module1608may determine correspondence between one or more characteristics of the serial data1607or of the proxy access device122and rate data1610, which may associate characteristics with corresponding sample rates. Based on the characteristics of the serial data1607or proxy access device122, a sample rate for transmission of the data to the proxy host device120may be determined. In some implementations, the rate for transmission of data to the proxy host device120may be determined based on user input or one or more settings or configurations. For example, transmission of data to a proxy access device122or proxy host device120or receipt of data from a proxy access device122or proxy host device120may be tested at a selected sample rate. In addition to determining a sample rate for the exchange of data with the Bluetooth controller1602, the rate determination module1608or one or more other modules may determine other characteristics of the exchange of data, such as a transmission power, a Bluetooth mode, one or more format characteristics of the exchanged data, and so forth. In some implementations, the Bluetooth controller1602may be used to reset, power cycle, or reconfigure particular communication links1604or devices in the enclosure102, while maintaining other communication links1604. For example, the Bluetooth controller1602may maintain a communication link1604with a proxy host device120while resetting a communication link1604used by a proxy access device122. As another example, the Bluetooth controller1602may maintain a communication link1604with one or more first proxy access devices122while resetting a communication link1604with a second proxy access device122. Additionally, in some implementations, the Bluetooth controller1602may be used to provide commands to the proxy access device122using the communication link1604, such as commands associated with remote control devices, headsets, microphones, automotive audio systems, and so forth. For example, commands may include control commands to pause or resume the output of audio, commands to access a contact list or send or receive communications, commands that simulate the press of a button or other control, and so forth.

In some implementations, the Bluetooth controller1602may engage proxy host devices120, as well as other devices, using wired connections908. For example, the Bluetooth controller1602may include a set of USB connections. In one implementation, the Bluetooth controller1602may include a plurality of connections. For example, the Bluetooth controller1602may include eight USB connections. In other implementations, other numbers or other types of connections may be used. The Bluetooth controller1602may include a communication module912(1) for establishing a Bluetooth communication link1604with a communication module912(2) of one or more proxy access devices122. For example, the communication module912(1) may establish a communication link1604using a Bluetooth pairing process.

A processor or other type of controller may be used to control the functions of the Bluetooth controller1602and may be engaged with power sources918and other devices within the enclosure102. Power connectors may be used to provide power to the Bluetooth controller1602, to ground the Bluetooth controller1602, and so forth. In some implementations, the Bluetooth controller may include one or more buttons or other types of controls, which may be used to perform various functions, such as resetting the Bluetooth controller1602, initiating or canceling Bluetooth pairing processes, changing one or more settings or configurations, and so forth.

Instructions provided to the Bluetooth controller1602may be used to change various characteristics of the Bluetooth data1606exchanged with proxy access devices122. For example, the Bluetooth controller1602may exchange data at a sample rate or transmit power selected by a user or selected automatically based on characteristics of the data to be exchanged or of the proxy access device122. The Bluetooth controller1602may also control a Bluetooth mode associated with the exchange of data, such as use of Bluetooth 2.0 features when exchanging data versus Bluetooth 3.0 features.

As described previously, an AUT104may be used to cause a proxy access device122to exchange Bluetooth data1606with other devices. In some implementations, Bluetooth data1606may include data provided to a speaker or other type of output device for output or received from a microphone or other type of input device. The Bluetooth controller1602may function as a source or sink of Bluetooth data1606, or may simultaneously function as both a source and sink, such as when performing bidirectional exchanges of data. For example, a communication module912(1) of the Bluetooth controller1602may establish a Bluetooth communication link1604with a communication module912(2) of the proxy access device122such as by pairing the Bluetooth controller1602with the proxy access device122. WhileFIG.16depicts a single proxy access device122, a Bluetooth controller1602may establish a communication link1604with multiple proxy access devices122. From the perspective of the proxy access device122the Bluetooth controller1602may then function as a speaker, microphone, headset, or other device when exchanging Bluetooth data1606with the proxy access device122. For example, the Bluetooth controller1602may receive Bluetooth data1606from the proxy access device122without generating audible output, and may generate or send preexisting Bluetooth data1606to the proxy access device122without receiving audible input. Continuing the example, by suppressing generation of audio by a proxy access device122, access to data exchanged with the proxy access device122by unauthorized individuals that could overhear generated audio may be prevented. In some cases, the Bluetooth controller1602may exchange data with a proxy host device120or another device. For example, a host device or another source of data may provide data to the Bluetooth controller1602, which may function as a bridge between the host device and the proxy access device122and transmit the data to the proxy access device122via the communication link1604.

As described previously, the rate determination module1608associated with the Bluetooth controller1602may determine a sample rate for use when exchanging the Bluetooth data1606. The sample rate may be determined based on characteristics of the Bluetooth data1606or proxy access device122or based on user input or an existing setting or configuration. For example, when testing bidirectional exchanges of Bluetooth data1606, a lower sample rate may be used than when testing unidirectional transmissions of Bluetooth data1606. In some implementations, the rate determination module1608or one or more other modules may determine other characteristics of the data exchanged with the proxy access device122or characteristics of the transmission, such as the format of the data or the transmit power of the transmission.

An audio module1612of the Bluetooth controller1602may exchange data with the proxy host device120. For example, the audio module1612may convert audio data1614received from the proxy host device120via a USB port to serial data1607having a format that is interoperable with the Bluetooth controller1602, such as12S or SPDIF. The rate determination module1608may then determine a sample rate for transmission of data to the proxy access device122and in some implementations, other characteristics of the transmission. The data may then be transmitted to the proxy access device122as Bluetooth data1606via the communication link1604. In other cases, Bluetooth data1606may be received by the Bluetooth controller1602, from the proxy access device122, using the communication module912(1). The Bluetooth data1606provided by the proxy access device122may include audio data1614stored on the proxy access device122or received by the proxy access device122from the proxy host device120or another source. For example, audio data1614may be streamed over a network to or from the proxy access device122. Streamed data may be received and processed incrementally using stream processing techniques, without accessing all of the data associated with a complete file. The rate of the received data may be converted by the rate determination module1608, then the audio module1612may convert the serial data1607to audio data1614having a format that may be transmitted to the proxy host device120via a wired connection908(1), such as a USB format that may be transmitted to a USB port of the proxy host device120.

The proxy host device120may include one or more drivers1616associated with operation of the Bluetooth controller1602and the transmission and receipt of audio data1614. For example, the proxy host device120may execute a version of the Advanced Linux Sound Architecture (ALSA). The proxy host device120may also include one or more debug modules1618which may be used to provide signals to the proxy access device122, change one or more configurations or control operations of the proxy access device122, receive data from the proxy access device122indicative of operations, and so forth.

WhileFIG.16describes use of a Bluetooth controller1602to facilitate exchanges of Bluetooth data1606by the proxy access device122, in other implementations, controllers for use of other communication protocols may be used. For example, a proxy access device122may communicate with a proxy host device120using a first protocol, and with a control device using a second protocol.

FIG.17is a flow diagram1700illustrating an implementation of a method for testing the exchange of data for a proxy access device122using a communication protocol. At1702, a connection between a host device and a control device may be established. A communication link1604between the control device and a proxy access device122may also be established. In some implementations, the communication protocol may include Bluetooth and the communication link1604may include a Bluetooth communication link.

At1704, audio data1614having a first format may be transmitted from the host device to the control device. For example, the host device may store or generate audio data1614to be tested by the proxy access device122. As another example, audio data1614may be streamed to the host device or proxy access device122using one or more networks112, such as from a workstation108that communicates with the host device or proxy access device122via the network(s)112.

At1706, the audio data1614may be converted from a first format to a second format using the control device. For example, as described with regard toFIG.16, an audio module1612may convert audio data1614received via a wired connection908to serial data1607associated with the I2S format or another format interoperable with the control device.

At1708, a sample rate for transmission of data having the second format may be determined based on characteristics of the data or of the proxy access device122. For example, the control device may include a rate determination module1608or other type of rate converter that may control a sample rate at which Bluetooth data1606or another type of data is transmitted. The sample rate may be determined based on the type of data, quantity of data, or other characteristics of the data to be sent to the proxy access device122, the operations to be performed by the proxy access device122, hardware or software components of the proxy access device122, and so forth. In some implementations, one or more other characteristics of the format of the data to be transmitted or the transmission of the data may also be determined. For example, a particular transmit power or mode associated with the Bluetooth protocol may be determined based on the characteristics of the data, the devices, or based on user input.

At1710, the data having the second format may be transmitted to the proxy access device122via the communication link1604using the determined sample rate. At1712, first test data indicative of characteristics of the transmission of the data to the proxy access device122may be received. For example, the proxy access device122may transmit data indicative of receipt of the data to the host device, a management server118, or one or more other devices. As another example, the proxy access device122or control device may generate test data indicative of the characteristics of the exchange of data, and one or more other devices may receive the test data from the proxy access device122or the control device.

In other implementations, data may be transmitted from the proxy access device122to the control device, as shown in blocks1714through1720. In some cases, the use of the proxy access device122to both send and receive data may be tested. In other cases, only one of such capabilities may be tested. At1714, the control device may receive data from the proxy access device122. The data received from the proxy access device122may have a third format. For example, the proxy access device122may provide Bluetooth data1606to a Bluetooth controller1602, with a format and sample rate suitable for output using a speaker, headphones, or other type of output device.

At1716, a sample rate for transmission of data to the host device may be determined by the control device. In some implementations, other characteristics of the data or the transmission of the data may also be determined. At1718, the data received from the proxy access device122may be converted from the third format to a fourth format. For example, data that is received from the proxy access device122may undergo a similar conversion process that the data transmitted to the proxy access device122underwent. Continuing the example, data received from the proxy access device122may be converted from a format that is interoperable with a Bluetooth controller1602, such as12S, to a format suitable for transmission to a USB controller of the host device.

At1720, the data may be transmitted to the host device. At1722, second test data indicative of characteristics of the data from the proxy access device122may be received.