11import pytest
22import json
3- from pins . rsconnect . fs import RsConnectFs
3+ import sklearn
44from pins .boards import BoardRsConnect
55
6+ import vetiver
7+ from vetiver .rsconnect import deploy_rsconnect
8+
9+ # Load data, model
10+ X_df , y = vetiver .mock .get_mock_data ()
11+ model = vetiver .mock .get_mock_model ().fit (X_df , y )
12+
613RSC_SERVER_URL = "http://localhost:3939"
714RSC_KEYS_FNAME = "vetiver/tests/rsconnect_api_keys.json"
815
916pytestmark = pytest .mark .rsc_test # noqa
1017
18+
19+ def server_from_key (name ):
20+ from rsconnect .api import RSConnectServer
21+
22+ with open (RSC_KEYS_FNAME ) as f :
23+ api_key = json .load (f )[name ]
24+ return RSConnectServer (RSC_SERVER_URL , api_key )
25+
1126def rsc_from_key (name ):
1227 from pins .rsconnect .api import RsConnectApi
1328
1429 with open (RSC_KEYS_FNAME ) as f :
1530 api_key = json .load (f )[name ]
1631 return RsConnectApi (RSC_SERVER_URL , api_key )
1732
33+
1834def rsc_fs_from_key (name ):
1935 from pins .rsconnect .fs import RsConnectFs
2036
@@ -29,6 +45,7 @@ def rsc_delete_user_content(rsc):
2945 for entry in content :
3046 rsc .delete_content_item (entry ["guid" ])
3147
48+
3249@pytest .fixture (scope = "function" )
3350def rsc_short ():
3451 # tears down content after each test
@@ -37,18 +54,34 @@ def rsc_short():
3754 # delete any content that might already exist
3855 rsc_delete_user_content (fs_susan .api )
3956
40- yield BoardRsConnect ("" , fs_susan , allow_pickle_read = True ) #fs_susan.ls to list content
57+ yield BoardRsConnect (
58+ "" , fs_susan , allow_pickle_read = True
59+ ) # fs_susan.ls to list content
4160
4261 rsc_delete_user_content (fs_susan .api )
4362
44- from vetiver import VetiverModel , vetiver_pin_write , mock
45- import sklearn
46- # Load data, model
47- X_df , y = mock .get_mock_data ()
48- model = mock .get_mock_model ().fit (X_df , y )
4963
5064def test_board_pin_write (rsc_short ):
51- v = VetiverModel (model = model , ptype_data = X_df ,
52- model_name = "susan/model" , versioned = None )
53- vetiver_pin_write (board = rsc_short , model = v )
65+ v = vetiver .VetiverModel (
66+ model = model , ptype_data = X_df , model_name = "susan/model" , versioned = None
67+ )
68+ vetiver .vetiver_pin_write (board = rsc_short , model = v )
5469 assert isinstance (rsc_short .pin_read ("susan/model" ), sklearn .dummy .DummyRegressor )
70+
71+ @pytest .mark .xfail
72+ def test_deploy (rsc_short ):
73+ # TODO: test in Dockerfile
74+ v = vetiver .VetiverModel (
75+ model = model , ptype_data = X_df , model_name = "susan/model" , versioned = None
76+ )
77+
78+ vetiver .vetiver_pin_write (board = rsc_short , model = v )
79+
80+ deploy_rsconnect (
81+ connect_server = server_from_key ("susan" ),
82+ board = rsc_short ,
83+ pin_name = "susan/model"
84+ )
85+ response = vetiver .predict (RSC_SERVER_URL + "/predict/" , json = X_df )
86+ assert response .status_code == 200 , response .text
87+ assert response .json () == {"prediction" : [44.47 , 44.47 ]}, response .json ()
0 commit comments