99 "github.com/stretchr/testify/require"
1010)
1111
12- func TestClusterData (t * testing.T ) {
12+ func TestClusterDataByID (t * testing.T ) {
1313 d , err := qa.ResourceFixture {
1414 Fixtures : []qa.HTTPFixture {
1515 {
@@ -47,6 +47,117 @@ func TestClusterData(t *testing.T) {
4747 }
4848}
4949
50+ func TestClusterDataByName (t * testing.T ) {
51+ d , err := qa.ResourceFixture {
52+ Fixtures : []qa.HTTPFixture {
53+ {
54+ Method : "GET" ,
55+ Resource : "/api/2.0/clusters/list" ,
56+
57+ Response : ClusterList {
58+ Clusters : []ClusterInfo {{
59+ ClusterID : "abc" ,
60+ NumWorkers : 100 ,
61+ ClusterName : "Shared Autoscaling" ,
62+ SparkVersion : "7.1-scala12" ,
63+ NodeTypeID : "i3.xlarge" ,
64+ AutoterminationMinutes : 15 ,
65+ State : ClusterStateRunning ,
66+ AutoScale : & AutoScale {
67+ MaxWorkers : 4 ,
68+ },
69+ }},
70+ },
71+ },
72+ },
73+ Resource : DataSourceCluster (),
74+ HCL : `cluster_name = "Shared Autoscaling"` ,
75+ Read : true ,
76+ NonWritable : true ,
77+ ID : "_" ,
78+ }.Apply (t )
79+ require .NoError (t , err , err )
80+ assert .Equal (t , 15 , d .Get ("cluster_info.0.autotermination_minutes" ))
81+ assert .Equal (t , "Shared Autoscaling" , d .Get ("cluster_info.0.cluster_name" ))
82+ assert .Equal (t , "i3.xlarge" , d .Get ("cluster_info.0.node_type_id" ))
83+ assert .Equal (t , 4 , d .Get ("cluster_info.0.autoscale.0.max_workers" ))
84+ assert .Equal (t , "RUNNING" , d .Get ("cluster_info.0.state" ))
85+
86+ for k , v := range d .State ().Attributes {
87+ fmt .Printf ("assert.Equal(t, %#v, d.Get(%#v))\n " , v , k )
88+ }
89+ }
90+
91+ func TestClusterDataByName_NotFound (t * testing.T ) {
92+ qa.ResourceFixture {
93+ Fixtures : []qa.HTTPFixture {
94+ {
95+ Method : "GET" ,
96+ Resource : "/api/2.0/clusters/list" ,
97+
98+ Response : ClusterList {
99+ Clusters : []ClusterInfo {},
100+ },
101+ },
102+ },
103+ Resource : DataSourceCluster (),
104+ HCL : `cluster_name = "Unknown"` ,
105+ Read : true ,
106+ NonWritable : true ,
107+ ID : "_" ,
108+ }.ExpectError (t , "there is no cluster with name 'Unknown'" )
109+ }
110+
111+ func TestClusterDataByName_DuplicateNames (t * testing.T ) {
112+ qa.ResourceFixture {
113+ Fixtures : []qa.HTTPFixture {
114+ {
115+ Method : "GET" ,
116+ Resource : "/api/2.0/clusters/list" ,
117+
118+ Response : ClusterList {
119+ Clusters : []ClusterInfo {
120+ {
121+ ClusterID : "abc" ,
122+ NumWorkers : 100 ,
123+ ClusterName : "Shared Autoscaling" ,
124+ SparkVersion : "7.1-scala12" ,
125+ NodeTypeID : "i3.xlarge" ,
126+ AutoterminationMinutes : 15 ,
127+ State : ClusterStateRunning ,
128+ },
129+ {
130+ ClusterID : "def" ,
131+ NumWorkers : 100 ,
132+ ClusterName : "Shared Autoscaling" ,
133+ SparkVersion : "7.1-scala12" ,
134+ NodeTypeID : "i3.xlarge" ,
135+ AutoterminationMinutes : 15 ,
136+ State : ClusterStateRunning ,
137+ },
138+ },
139+ },
140+ },
141+ },
142+ Resource : DataSourceCluster (),
143+ HCL : `cluster_name = "Shared Autoscaling"` ,
144+ Read : true ,
145+ NonWritable : true ,
146+ ID : "_" ,
147+ }.ExpectError (t , "there is more than one cluster with name 'Shared Autoscaling'" )
148+ }
149+
150+ func TestClusterDataByName_ListError (t * testing.T ) {
151+ qa.ResourceFixture {
152+ Fixtures : qa .HTTPFailures ,
153+ Resource : DataSourceCluster (),
154+ HCL : `cluster_name = "Unknown"` ,
155+ Read : true ,
156+ NonWritable : true ,
157+ ID : "_" ,
158+ }.ExpectError (t , "I'm a teapot" )
159+ }
160+
50161func TestClusterData_Error (t * testing.T ) {
51162 qa.ResourceFixture {
52163 Fixtures : qa .HTTPFailures ,
@@ -57,3 +168,13 @@ func TestClusterData_Error(t *testing.T) {
57168 ID : "_" ,
58169 }.ExpectError (t , "I'm a teapot" )
59170}
171+
172+ func TestClusterData_ErrorNoParams (t * testing.T ) {
173+ qa.ResourceFixture {
174+ Resource : DataSourceCluster (),
175+ Read : true ,
176+ NonWritable : true ,
177+ HCL : "" ,
178+ ID : "_" ,
179+ }.ExpectError (t , "you need to specify either `cluster_name` or `cluster_id`" )
180+ }
0 commit comments