Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

# -*- coding: utf-8 -*- 

""" 

The obspy.earthworm.client test suite. 

""" 

 

from obspy.earthworm import Client 

from obspy import read 

from obspy.core.utcdatetime import UTCDateTime 

from obspy.core.util import NamedTemporaryFile 

import os 

import unittest 

from numpy import array 

 

 

class ClientTestCase(unittest.TestCase): 

    """ 

    Test cases for obspy.earthworm.client.Client. 

    """ 

    def setUp(self): 

        # Monkey patch: set lower default precision of all UTCDateTime objects 

        UTCDateTime.DEFAULT_PRECISION = 4 

 

    def tearDown(self): 

        # restore default precision of all UTCDateTime objects 

        UTCDateTime.DEFAULT_PRECISION = 6 

 

    def test_getWaveform(self): 

        """ 

        Tests getWaveform method. 

        """ 

        client = Client("pele.ess.washington.edu", 16017) 

        start = UTCDateTime() - 24 * 3600 

        end = start + 30 

        # example 1 -- 1 channel, cleanup 

        stream = client.getWaveform('UW', 'TUCA', '', 'BHZ', start, end) 

        self.assertEquals(len(stream), 1) 

        delta = stream[0].stats.delta 

        trace = stream[0] 

        self.assertTrue(len(trace) == 1201) 

        self.assertTrue(trace.stats.starttime >= start - delta) 

        self.assertTrue(trace.stats.starttime <= start + delta) 

        self.assertTrue(trace.stats.endtime >= end - delta) 

        self.assertTrue(trace.stats.endtime <= end + delta) 

        self.assertEquals(trace.stats.network, 'UW') 

        self.assertEquals(trace.stats.station, 'TUCA') 

        self.assertEquals(trace.stats.location, '') 

        self.assertEquals(trace.stats.channel, 'BHZ') 

        # example 2 -- 1 channel, no cleanup 

        stream = client.getWaveform('UW', 'TUCA', '', 'BHZ', start, end, 

                                    cleanup=False) 

        self.assertTrue(len(stream) >= 2) 

        summed_length = array([len(trace) for trace in stream]).sum() 

        self.assertTrue(summed_length == 1201) 

        self.assertTrue(stream[0].stats.starttime >= start - delta) 

        self.assertTrue(stream[0].stats.starttime <= start + delta) 

        self.assertTrue(stream[-1].stats.endtime >= end - delta) 

        self.assertTrue(stream[-1].stats.endtime <= end + delta) 

        for trace in stream: 

            self.assertEquals(trace.stats.network, 'UW') 

            self.assertEquals(trace.stats.station, 'TUCA') 

            self.assertEquals(trace.stats.location, '') 

            self.assertEquals(trace.stats.channel, 'BHZ') 

        # example 3 -- component wildcarded with '?' 

        stream = client.getWaveform('UW', 'TUCA', '', 'BH?', start, end) 

        self.assertEquals(len(stream), 3) 

        for trace in stream: 

            self.assertTrue(len(trace) == 1201) 

            self.assertTrue(trace.stats.starttime >= start - delta) 

            self.assertTrue(trace.stats.starttime <= start + delta) 

            self.assertTrue(trace.stats.endtime >= end - delta) 

            self.assertTrue(trace.stats.endtime <= end + delta) 

            self.assertEquals(trace.stats.network, 'UW') 

            self.assertEquals(trace.stats.station, 'TUCA') 

            self.assertEquals(trace.stats.location, '') 

        self.assertEquals(stream[0].stats.channel, 'BHZ') 

        self.assertEquals(stream[1].stats.channel, 'BHN') 

        self.assertEquals(stream[2].stats.channel, 'BHE') 

 

    def test_saveWaveform(self): 

        """ 

        Tests saveWaveform method. 

        """ 

        testfile = NamedTemporaryFile().name 

        try: 

            # initialize client 

            client = Client("pele.ess.washington.edu", 16017) 

            start = UTCDateTime() - 24 * 3600 

            end = start + 30 

            # 1 channel, cleanup (using SLIST to avoid dependencies) 

            client.saveWaveform(testfile, 'UW', 'TUCA', '', 'BHZ', start, end, 

                                format="SLIST") 

            stream = read(testfile) 

            self.assertEquals(len(stream), 1) 

            delta = stream[0].stats.delta 

            trace = stream[0] 

            self.assertTrue(len(trace) == 1201) 

            self.assertTrue(trace.stats.starttime >= start - delta) 

            self.assertTrue(trace.stats.starttime <= start + delta) 

            self.assertTrue(trace.stats.endtime >= end - delta) 

            self.assertTrue(trace.stats.endtime <= end + delta) 

            self.assertEquals(trace.stats.network, 'UW') 

            self.assertEquals(trace.stats.station, 'TUCA') 

            self.assertEquals(trace.stats.location, '') 

            self.assertEquals(trace.stats.channel, 'BHZ') 

        finally: 

            os.remove(testfile) 

 

 

def suite(): 

    return unittest.makeSuite(ClientTestCase, 'test') 

 

 

if __name__ == '__main__': 

    unittest.main(defaultTest='suite')