Поддельный http-сервер для тестирования - PullRequest
2 голосов
/ 01 ноября 2011

У меня есть приложение, которое подключается к IP-камере и выполняет HTTP-запрос для получения изображения и M-JPEG. Пока все в порядке, потому что у меня есть камера в комнате разработки. Но через несколько недель камера будет запущена в производство (они очень дорогие), поэтому у меня не будет их для тестирования и отладки моего приложения.

То, что я хочу знать, это то, что было бы лучшим способом "издеваться" над этими камерами? На данный момент мое приложение использует 2 камеры, скажем, они на http://192.168.88.1 и http://192.168.88.2. Я думаю об этом:

  1. В моем приложении я мог бы инкапсулировать функции, которые HTTP-вызовы в классе, который может сделать реальный HTTP-запрос, когда в отпустить и подделать, когда в отладке. Плохая сторона этого в том, что это будет не воспроизводить реальные вещи, такие как случайный таймаут и сеть трафика.
  2. Может быть, где-нибудь есть симулятор ip-камеры, который я могу поставить на сеть и использовать?
  3. Возможно, создайте реальный http-запрос к реальному серверу, который у меня будет запрограммирован на возврат поддельной картинки? Если да, то как действовать?

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 01 ноября 2011

Ad.1: Это хороший подход при модульном тестировании - ваш код не должен зависеть от внешних серверов / устройств / файловых систем.Но вы уже видите, что эта среда может быть слишком идеализированной.Однако я хотел бы вывести код инфраструктуры HTTP на внешний интерфейс - это улучшит ваши возможности тестирования и общую архитектуру.

Реклама.2: Никогда не слышал о таких, извините.

Объявление.3: я думаю, что это самое выполнимое решение.Если вы когда-либо работали с сервлетами, просто возьмите Tomcat или Jetty и напишите один.Затем подключитесь к сервлету под localhost:8080/war_name/servlet_name и верните все, что вы хотите от него. Здесь - простой мертвый пример.

Если вы никогда не слышали о сервлетах Java и контейнерах сервлетов - о них все же стоит узнать.Но может быть быстрее запустить HTTP-сервер, встроенный в Sun JDK, см. HttpServer API и пример .

1 голос
/ 01 ноября 2011

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

Например, вот настоящая программа, написанная с использованием Sinatra:

require 'sinatra'

get '/hi' do
  "Hello World!"
end

Это запустит простую сетьслушатель, который ответит Hello World!, если вы нажмете URI /hi.

Sinatra - приложение на основе Ruby, и лучше всего, если вы знаете Ruby.Если вы этого не сделаете или предпочитаете другой язык, на странице в Википедии Синатры перечислены 25+ похожих приложений, написанных на других языках, так что, скорее всего, вы можете воспользоваться опцией.

1 голос
/ 01 ноября 2011

Если вы хотите получить реальные изображения и иметь доступ к веб-камере, вы можете создать в своем решении веб-сервис ASP.Net, который по запросу снимает изображение с вашей веб-камеры.Когда вы находитесь в режиме отладки, настройте свое решение для запуска веб-службы на сервере разработки asp.net, чтобы вам не пришлось настраивать «настоящий» веб-сервер

Вот ссылка на код длясделать снимок из c # Это для winforms, но он должен быть адаптируем для веб-службы http://sites.google.com/site/webcamlibrarydotnet/winfrom-and-csharp-sample-code-and-download

0 голосов
/ 12 февраля 2018

Использовать сборку Python на http-сервере

# sudo python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 ...
123.123.12.1 - - [12/Feb/2018 11:34:02] "GET / HTTP/1.1" 200 -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...