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

Листинг 15.2. Имитация сбоев при передаче данных для тестирования приложения

Листинг 15.2. Имитация сбоев при передаче данных для тестирования приложения

'Флаги условной компиляции для нашего инструментированного кода
#Const DEBUG_SIMULATE_FAILURES = 1 'Имитировать сбои
'#Const DEBUG_SIMULATE_FAILURES = 0 'Не имитировать сбои
'-----------------------------------------------------------------
'Глобальная переменная, которую мы хотим использовать для указания
'необходимости генерации исключений в процессе передачи данных
'-----------------------------------------------------------------
#If DEBUG_SIMULATE_FAILURES <> 0 Then
'Переменная для хранения информация о следующем сбое
Shared g_failureCode As SimulatedFailures = _
 SimulatedFailures.noFailurePending
'Список сбоев, которые мы хотим имитировать
public enum SimulatedFailures
 noFailurePending 'No test failures pending
 'Имитируемые сбои:
 failInNextWriteSocketCode
 failInNextWebServiceCall
 failInNextFileIODuringFileOpen
 failInNextFileIODuringFileRead
 'и так далее
End Enum
#End If 'DEBUG_SIMULATE_FAILURES
'---------------------------------------------------
'Функция, которую мы используем для передачи данных.
'---------------------------------------------------
Private Sub writeDataToSocket( _
 ByVal mySocket As System.Net.Sockets.Socket, _
 ByVal dataToSend() As Byte)
 '------------------------------------------------------------------
 'Этот код следует компилировать лишь при тестировании сетевых сбоев
 '------------------------------------------------------------------
#If DEBUG_SIMULATE_FAILURES <> 0 Then
 'Если это сбой, который мы хотим тестировать, генерировать исключение
 If (g_failureCode = _
  SimulatedFailures.failInNextWriteSocketCode) Then
  'Сбросить этот сбой, чтобы он не возник
  'при следующем вызове этой функции
  g_failureCode = SimulatedFailures.noFailurePending
  Throw New Exception("Test communications failure: " + _
   g_failureCode.ToString())
 End If
#End If
 'Передать данные обычным образом.
 mySocket.Send(dataToSend)
End Sub

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


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