Книга: Программирование мобильных устройств на платформе .NET Compact Framework

Листинг 15.2. Имитация сбоев связи с целью тестирования приложения

Листинг 15.2. Имитация сбоев связи с целью тестирования приложения

//-----------------------------------------------------------------
//Глобальная переменная, которую мы хотим использовать для указания
//необходимости генерации исключений в процессе передачи данных
//-----------------------------------------------------------------
#if DEBUG_SIMULATE_FAILURES
//Переменная для хранения информация о следующем сбое
static SimulatedFailures g_failureCode = SimulatedFailures.noFailurePending;
//Список сбоев, которые мы хотим имитировать
public enum SimulatedFailures {
 noFailurePending, //Отсутствуют текущие сбои, подлежащие обработке
 //Имитируемые сбои:
 failInNextWriteSocketCode,
 failInNextWebServiceCall,
 failInNextFileIODuringFileOpen,
 failInNextFileIODuringFileRead
 //и так далее
}
#endif //DEBUG_SIMULATE_FAILURES
//-----------------------------------------------------
//Функция, которую мы используем для передачи данных...
//-----------------------------------------------------
private void writeDataToSocket(System.Net.Sockets.Socket mySocket, byte[] dataToSend) {
 //------------------------------------------------------------------
 //Этот код следует компилировать лишь при тестировании сетевых сбоев
 //------------------------------------------------------------------
#if DEBUG_SIMULATE_FAILURES
 //Если это сбой, который мы хотим тестировать, генерировать исключение
 if (g_failureCode == SimulatedFailures.failInNextWriteSocketCode) {
  //Сбросить этот сбой, чтобы он не возник
  //при следующем вызове этой функции
  g_failureCode = SimulatedFailures.noFailurePending;
  throw new Exception("Test communications failure: " + g_failureCode.ToString());
 }
#endif
 //Передать данные обычным образом...
 mySocket.Send(dataToSend);
} //конец функции

Оглавление книги


Генерация: 1.273. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз