evgeniy778 commited on
Commit
b804692
·
verified ·
1 Parent(s): a4a7eea

Create test_compute_provider_contract.py

Browse files
Files changed (1) hide show
  1. test_compute_provider_contract.py +182 -0
test_compute_provider_contract.py ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # =====================================================
2
+ # Apckeyl Framework
3
+ # Version 1.0
4
+ # test_compute_provider_contract.py
5
+ # =====================================================
6
+
7
+ """
8
+ Tests for Compute Provider Contract.
9
+
10
+ Version 1.0
11
+ """
12
+
13
+ from example_compute_provider import (
14
+ ExampleComputeProvider,
15
+ )
16
+
17
+
18
+ # =====================================================
19
+ # Test Provider Interface
20
+ # =====================================================
21
+
22
+ def test_provider_has_get_provider_info():
23
+
24
+ provider = ExampleComputeProvider()
25
+
26
+ assert callable(
27
+ provider.get_provider_info
28
+ )
29
+
30
+
31
+ def test_provider_has_health_check():
32
+
33
+ provider = ExampleComputeProvider()
34
+
35
+ assert callable(
36
+ provider.health_check
37
+ )
38
+
39
+
40
+ def test_provider_has_supports_task():
41
+
42
+ provider = ExampleComputeProvider()
43
+
44
+ assert callable(
45
+ provider.supports_task
46
+ )
47
+
48
+
49
+ def test_provider_has_execute():
50
+
51
+ provider = ExampleComputeProvider()
52
+
53
+ assert callable(
54
+ provider.execute
55
+ )
56
+
57
+
58
+ # =====================================================
59
+ # Test Provider Information Contract
60
+ # =====================================================
61
+
62
+ def test_provider_information_contract():
63
+
64
+ provider = ExampleComputeProvider()
65
+
66
+ info = provider.get_provider_info()
67
+
68
+ required_fields = [
69
+ "provider_id",
70
+ "provider_name",
71
+ "provider_version",
72
+ "status",
73
+ "supported_tasks",
74
+ ]
75
+
76
+ for field in required_fields:
77
+
78
+ assert field in info
79
+
80
+
81
+ # =====================================================
82
+ # Test Health Contract
83
+ # =====================================================
84
+
85
+ def test_health_contract():
86
+
87
+ provider = ExampleComputeProvider()
88
+
89
+ health = provider.health_check()
90
+
91
+ assert "provider_id" in health
92
+
93
+ assert "status" in health
94
+
95
+ assert health["status"] == "healthy"
96
+
97
+
98
+ # =====================================================
99
+ # Test Task Support Contract
100
+ # =====================================================
101
+
102
+ def test_task_support_contract():
103
+
104
+ provider = ExampleComputeProvider()
105
+
106
+ assert provider.supports_task(
107
+ "example_task"
108
+ ) is True
109
+
110
+ assert provider.supports_task(
111
+ "unknown_task"
112
+ ) is False
113
+
114
+
115
+ # =====================================================
116
+ # Test Execution Contract
117
+ # =====================================================
118
+
119
+ def test_execution_contract():
120
+
121
+ provider = ExampleComputeProvider()
122
+
123
+ task = {
124
+ "task_id": "contract_test_001",
125
+ "task_type": "example_task",
126
+ "payload": {
127
+ "message": "contract test",
128
+ },
129
+ }
130
+
131
+ result = provider.execute(task)
132
+
133
+ required_fields = [
134
+ "task_id",
135
+ "status",
136
+ "result",
137
+ "error",
138
+ ]
139
+
140
+ for field in required_fields:
141
+
142
+ assert field in result
143
+
144
+ assert result["task_id"] == (
145
+ "contract_test_001"
146
+ )
147
+
148
+ assert result["status"] == "completed"
149
+
150
+ assert result["error"] is None
151
+
152
+
153
+ # =====================================================
154
+ # Test Error Contract
155
+ # =====================================================
156
+
157
+ def test_error_contract():
158
+
159
+ provider = ExampleComputeProvider()
160
+
161
+ task = {
162
+ "task_id": "contract_test_002",
163
+ "task_type": "unknown_task",
164
+ "payload": {},
165
+ }
166
+
167
+ result = provider.execute(task)
168
+
169
+ assert result["task_id"] == (
170
+ "contract_test_002"
171
+ )
172
+
173
+ assert result["status"] == "error"
174
+
175
+ assert result["result"] is None
176
+
177
+ assert result["error"] is not None
178
+
179
+
180
+ # =====================================================
181
+ # End of File
182
+ # =====================================================