2016-05-02 1 views
1

Недавно я заметил проблему с Эмуляторы Genymotion и виртуальная коробка конфигурации. До сих пор я использовал только один эмулятор genymotion, который, как только я начал все время, имел один статический IP-адрес, а тесты автоматизации Java-скриптов не дали мне никаких проблем, потому что он был настроен на вызов именно этого IP-адреса и запуск тестов на эмуляторе. Недавно я решил добавить несколько других эмуляторов в свой список, и теперь эти IP-адреса перепутались. Иногда IP с одного устройства (если он выключен) назначается другому эмулятору, или IP из последнего созданного эмулятора назначается первому и так далее. Предположим, у меня есть 4 устройства в списке; Я заметил порядок приоритетности назначения IP-адресов. Если я запускаю виртуальную коробку, открываю genymotion и запускаю, например, первое устройство, он получает 192.168.155.101; второе устройство 192.168.155.102; третье устройство 192.168.155.103; и т. д. соответственно. Но если я закрою и снова открою genymotion и виртуальную коробку, решите сначала запустить четвертое устройство, он получит IP-адрес от первого 192.168.155.101, который приносит мне проблемы с конфигурацией с помощью сценариев Appium/Selenium. Можно ли назначать определенные IP-адреса определенным устройствам в genymotion, поэтому после перезапуска виртуальной коробки и genymotion они будут одинаковыми?Эмуляторы Genymotion получают разные IP-адреса каждый раз, когда я их запускаю

+0

Я считаю, что вы можете использовать имя устройства для дифференциации устройств. – karthick23

+0

Я понимаю это, но я должен избегать того, чтобы всегда идти к моему сценарию и настраивать возможности UDID в соответствии с тем, какое устройство подключено прямо сейчас. – GordonFreaman

+0

Это будет означать, что дифференцирующий фактор appium поймет – karthick23

ответ

2

С вашего поста, я не уверен, какую хост-систему вы используете. Я нахожусь в Linux (Ubuntu 16.04). Если вы находитесь на чем-то другом, детали могут отличаться от того, что ниже, но понятия одинаковы.

Genymotion опирается на хост-адаптер только VirtualBox (например, vboxnet0 и подсети 192.168.56.0, если вы работаете типичный хост Linux) для adb подключения к вещам, как Android Studio. При развертывании виртуальной машины Genymotion этот адаптер создается, и на нем включен сервер DHCP, встроенный в VirtualBox. Таким образом, после загрузки, вы увидите что-то подобное с несколькими виртуальными машинами стали:

$ adb devices 
List of devices attached 
192.168.56.101:5555 device 
192.168.56.102:5555 device 

Пока вы не перезагрузите VirtualBox, вы можете выключение и перезагрузка этих виртуальных машин и они получат тот же самый адрес каждый раз, когда , Однако, как вы заметили, если вы перезапустите VirtualBox, нет памяти об их предыдущем адресе, и адресация будет зависеть от порядка загрузки.

Большинство полнофункциональных DHCP-серверов (даже в дешевых домашних маршрутизаторах) позволяют регистрировать MAC для фиксированного IP-аренды. К сожалению, как это сейчас стоит, встроенный сервер VirtualBox DHCP этого не поддерживает.

Одна из идей, которые я использовал для обхода, заключалась в том, чтобы отключить DHCP-сервер VirtualBox только в сети, подключенной к виртуальной машине, запустить собственное прослушивание адаптера vboxnet0 хоста и настроить его для предоставления фиксированных IP-адресов для виртуальных машин Genymotion на основе их индивидуальных MAC-адресов. Вы можете отключить DHCP для виртуальных адаптеров VirtualBox под номером Файл-> Настройки-> Сеть-> Сети только для хостов. Фрагмент из файла конфигурации DHCP-сервера на моем хосте выглядит следующим образом:

subnet 192.168.56.0 netmask 255.255.255.0 { 
    range 192.168.56.101 192.168.56.200; 
} 

host n5_2 { 
    hardware ethernet 08:00:27:1F:F2:7E; 
    fixed-address 192.168.56.123; 
} 

где 192.168.56.0 относится к назначению на vboxnet0 подсети, а hardware ethernet адрес показанный на передовой части Настройки-> Сеть -> Адаптер 1 для каждой виртуальной машины, для которой вы хотите иметь фиксированные IP-адреса.

Это в основном работает, за исключением одной отягчающей проблемы: Genymotion Launcher проверяет конфигурацию сети каждый раз, когда запускается виртуальная машина.Когда он видит, что виртуальная машина использует адаптер только для хоста с отключенным DHCP, он будет создавать новый, если он не существует (например, vboxnet1, подсеть 192.168.57.0) с включенным DHCP и изменить сетевую конфигурацию виртуальной машины, чтобы указать на этот адаптер. Таким образом, после загрузки, вы будете иметь это (обратите внимание на новую подсеть .57 по сравнению с ранее):

$ adb devices 
List of devices attached 
192.168.57.101:5555 device 
192.168.57.102:5555 device 

В короткий промежуток времени, я экспериментировал, единственный способ я нашел, чтобы предотвратить Genymotion Launcher от изменения сетевые настройки при загрузке должны были открыть соответствующую панель VirtualBox при запуске каждой виртуальной машины с помощью запуска Genymotion Launcher. Я предполагаю, что при открытии он блокирует файл конфигурации, делая Launcher неспособным что-либо изменить. Когда я это сделал, когда VM установил использование адаптера не DHCP и моего DHCP-сервера хоста, как указано выше, одно устройство получает фиксированный IP-адрес в соответствии с конфигурацией DHCP, в то время как другие получают адреса на основе порядка загрузки:

$ adb devices 
List of devices attached 
192.168.56.101:5555 device 
192.168.56.123:5555 device 

Если вы можете настроить сервер DHCP на вашем хосте, и не против Открывание настройки панели каждый раз, когда вы начинаете каждую виртуальную машину, я думаю, вы могли бы рассмотреть это обходной путь. Для меня это не очень практично и лучшие варианты включают в себя:

  1. VirtualBox добавлена ​​поддержка для регистрации MAC в своем встроенном DHCP сервере.
  2. Genymotion удаляет (или опционально) проверку конфигурации во время загрузки.
  3. Выясните, как и почему имеет Настройки открытые блокирует конфигурацию виртуальной машины, а затем просто фиксируют ее.

 Смежные вопросы

  • Нет связанных вопросов^_^