def test_update_status_info(self):
   self.setupServerStatusMocks()
   self.setupFakePutsAndDeletes()
   fake_get_appcontroller_client = flexmock()
   fake_get_appcontroller_client.should_receive('get_stats') \
     .and_return([
       {'ip' : '1.1.1.1',
        'cpu' : '50',
        'memory' : '50',
        'disk' : '50',
        'roles' : 'roles1'},
       {'ip' : '2.2.2.2',
        'cpu' : '50',
        'memory' : '50',
        'disk' : '50',
        'roles' : 'roles1'}
     ])
   flexmock(AppDashboardHelper).should_receive('get_appcontroller_client') \
     .and_return(fake_get_appcontroller_client).once()
   
   data1 = AppDashboardData()
   data1.update_status_info()
   output = data1.get_status_info()
   self.assertEquals(len(output), 2)
   self.assertEquals(output[0]['ip'], '1.1.1.1')
   self.assertEquals(output[1]['ip'], '2.2.2.2')
  def test_update_users(self):
    flexmock(AppDashboardHelper).should_receive('list_all_users')\
      .and_return(['*****@*****.**', '*****@*****.**', '*****@*****.**']).once()
    flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
      .with_args('*****@*****.**').and_return(True).once()
    flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
      .with_args('*****@*****.**').and_return(False).once()
    flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
      .with_args('*****@*****.**').and_return(False).once()

    flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
      .with_args('*****@*****.**').and_return(True).once()
    flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
      .with_args('*****@*****.**').and_return(True).once()
    flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
      .with_args('*****@*****.**').and_return(False).once()

    flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
      .with_args('*****@*****.**').and_return(['app1', 'app2']).once()
    flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
      .with_args('*****@*****.**').and_return(['app2']).once()
    flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
      .with_args('*****@*****.**').and_return(['app2']).once()

    self.setupUserInfoMocks()

    data1 = AppDashboardData()
    output = data1.update_users()
    self.assertEquals(len(output), 3)
    self.assertTrue(output[0].is_user_cloud_admin)
    self.assertFalse(output[1].is_user_cloud_admin)
    self.assertFalse(output[2].is_user_cloud_admin)
    self.assertTrue(output[0].can_upload_apps)
    self.assertTrue(output[1].can_upload_apps)
    self.assertFalse(output[2].can_upload_apps)
  def test_get_owned_apps(self):
    # slip in some fake users
    self.setupUserInfoMocks()

    # mock out the App Engine Users API
    self.setupUsersAPIMocks()

    data1 = AppDashboardData()

    # First call, not logged in.
    output = data1.get_owned_apps()
    self.assertEqual(len(output), 0)

    # First user: [email protected], apps=app1,app2
    output = data1.get_owned_apps()
    self.assertTrue('app1' in output)
    self.assertTrue('app2' in output)

    # Second user: [email protected], apps=app2
    output = data1.get_owned_apps()
    self.assertTrue('app2' in output)

    # Third user: [email protected], admin=app2.
    output = data1.get_owned_apps()
    self.assertTrue('app2' in output)
 def test_get_application_info(self):
     self.setupAppStatusMocks()
     data1 = AppDashboardData()
     output = data1.get_application_info()
     self.assertEquals(len(output), 2)
     self.assertEquals(output['app1'], 'http://1.1.1.1:8080')
     self.assertEquals(output['app2'], None)
示例#5
0
    def test_get_dash_layout_settings(self):
        # slip in some fake users
        self.setupUserInfoMocks()

        # mock out the App Engine Users API
        self.setupUsersAPIMocks()

        data1 = AppDashboardData()

        # First call, not logged in.
        self.assertEqual(data1.get_dash_layout_settings(), {})

        # First user: [email protected], upload=True, cloud_admin=True
        self.assertEqual(
            self.flatten_dash_layout(data1.get_dash_layout_settings()),
            self.user_info1_cloud_admin_dict)

        # Second user: [email protected], upload=True, cloud_admin=False
        self.assertEqual(
            self.flatten_dash_layout(data1.get_dash_layout_settings()),
            self.user_info2_can_upload_apps_dict)

        # Third user: [email protected], upload=False, cloud_admin=False
        self.assertEqual(
            self.flatten_dash_layout(data1.get_dash_layout_settings()),
            self.user_info3_cannot_upload_apps_dict)

        # Fourth user: [email protected], upload=False, cloud_admin=False
        self.assertEqual(
            self.flatten_dash_layout(data1.get_dash_layout_settings()),
            self.user_info4_cannot_upload_and_owns_no_apps_dict)
 def test_get_status_info(self):
   self.setupServerStatusMocks()
   data1 = AppDashboardData()
   output = data1.get_status_info()
   self.assertEquals(len(output), 2)
   self.assertEquals(output[0]['ip'], '1.1.1.1')
   self.assertEquals(output[1]['ip'], '2.2.2.2')
 def test_get_api_status(self):
     self.setupApiStatusMocks()
     data1 = AppDashboardData()
     output = data1.get_api_status()
     self.assertEquals(len(output), 3)
     self.assertEquals(output['api1'], 'running')
     self.assertEquals(output['api2'], 'failed')
     self.assertEquals(output['api3'], 'unknown')
示例#8
0
    def test_update_users(self):
        flexmock(ndb).should_receive('put_multi').and_return()
        flexmock(AppDashboardHelper).should_receive('list_all_users')\
          .and_return(['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**']).once()
        flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
          .with_args('*****@*****.**').and_return(True).once()
        flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
          .with_args('*****@*****.**').and_return(False).once()
        flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin')\
          .with_args('*****@*****.**').and_return(False).once()
        flexmock(AppDashboardHelper).should_receive('is_user_cloud_admin') \
          .with_args('*****@*****.**').and_return(False).once()

        flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
          .with_args('*****@*****.**').and_return(True).once()
        flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
          .with_args('*****@*****.**').and_return(True).once()
        flexmock(AppDashboardHelper).should_receive('can_upload_apps')\
          .with_args('*****@*****.**').and_return(False).once()
        flexmock(AppDashboardHelper).should_receive('can_upload_apps') \
          .with_args('*****@*****.**').and_return(False).once()

        flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
          .with_args('*****@*****.**').and_return(['app1', 'app2']).once()
        flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
          .with_args('*****@*****.**').and_return(['app2']).once()
        flexmock(AppDashboardHelper).should_receive('get_owned_apps')\
          .with_args('*****@*****.**').and_return(['app2']).once()
        flexmock(AppDashboardHelper).should_receive('get_owned_apps') \
          .with_args('*****@*****.**').and_return([]).once()

        self.setupUserInfoMocks()

        data1 = AppDashboardData()

        output = data1.update_users()
        self.assertEquals(len(output), 4)
        self.assertTrue(output[0].is_user_cloud_admin)
        self.assertFalse(output[1].is_user_cloud_admin)
        self.assertFalse(output[2].is_user_cloud_admin)
        self.assertFalse(output[3].is_user_cloud_admin)
        self.assertTrue(output[0].can_upload_apps)
        self.assertTrue(output[1].can_upload_apps)
        self.assertFalse(output[2].can_upload_apps)
        self.assertFalse(output[3].can_upload_apps)
        self.assertEqual(
            self.flatten_dash_layout(output[0].dash_layout_settings),
            self.user_info1_cloud_admin_dict)
        self.assertEqual(
            self.flatten_dash_layout(output[1].dash_layout_settings),
            self.user_info2_can_upload_apps_dict)
        self.assertEqual(
            self.flatten_dash_layout(output[2].dash_layout_settings),
            self.user_info3_cannot_upload_apps_dict)
        self.assertEqual(
            self.flatten_dash_layout(output[3].dash_layout_settings),
            self.user_info4_cannot_upload_and_owns_no_apps_dict)
  def test_get_monitoring_url(self):
    fake_ip  = '1.1.1.1.'
    flexmock(AppDashboardData).should_receive('get_head_node_ip')\
    .and_return(fake_ip).once()

    data1 = AppDashboardData()
    url = data1.get_monitoring_url()
    self.assertEquals(url, "http://{0}:{1}".format(fake_ip,
      AppDashboardData.MONITOR_PORT))
 def test_delete_app_from_datastore(self):
   flexmock(logging).should_receive('info').and_return()
   self.setupUserInfoMocks()
   self.setupAppStatusMocks()
   data1 = AppDashboardData()
   output = data1.delete_app_from_datastore('app2', email='*****@*****.**')
   app_list = output.owned_apps
   self.assertEquals(output.email, '*****@*****.**')
   self.assertFalse('app2' in app_list)
   self.assertTrue('app1' in app_list)
示例#11
0
 def __init__(self, request, response):
     """ Constructor.
 
 Args:
   request: The webapp2.Request object that contains information about the
     current web request.
   response: The webapp2.Response object that contains the response to be
     sent back to the browser.
 """
     self.initialize(request, response)
     self.helper = AppDashboardHelper()
     self.dstore = AppDashboardData(self.helper)
  def test_update_application_info_no_apps(self):
    flexmock(AppDashboardHelper).should_receive('get_status_info')\
      .and_return([{
        'apps' : { 'none' :  False }
      }]).once()
    flexmock(AppDashboardHelper).should_receive('get_login_host')\
      .and_return('1.1.1.1').never()
    flexmock(AppDashboardHelper).should_receive('get_app_ports')\
      .and_return(['8080', '1444']).never()
    self.setupAppStatusMocks()
    self.setupFakePutsAndDeletes()

    data1 = AppDashboardData()
    output = data1.update_application_info()
    self.assertEquals(len(output), 0)
    def test_update_application_info_two_apps(self):
        flexmock(AppDashboardHelper).should_receive('get_status_info')\
          .and_return([{
            'apps' : { 'app1' : True, 'app2' : False }
          }]).once()
        flexmock(AppDashboardHelper).should_receive('get_login_host')\
          .and_return('1.1.1.1').once()
        flexmock(AppDashboardHelper).should_receive('get_app_port')\
          .and_return('8080').once()
        self.setupAppStatusMocks()
        self.setupFakePutsAndDeletes()

        data1 = AppDashboardData()
        output = data1.update_application_info()
        self.assertEquals(len(output), 2)
        self.assertEquals(output['app1'], 'http://1.1.1.1:8080')
        self.assertEquals(output['app2'], None)
    def test_update_api_status(self):
        self.setupApiStatusMocks()
        self.setupFakePutsAndDeletes()
        fake_get_appcontroller_client = flexmock()
        fake_get_appcontroller_client.should_receive('get_api_status')\
          .and_return({
            'api1' : 'running',
            'api2' : 'failed',
            'api3' : 'unknown',
          })
        flexmock(AppDashboardHelper).should_receive('get_appcontroller_client')\
          .and_return(fake_get_appcontroller_client).once()

        data1 = AppDashboardData()
        data1.update_api_status()
        output = data1.get_api_status()
        self.assertEquals(len(output), 3)
        self.assertEquals(output['api1'], 'running')
        self.assertEquals(output['api2'], 'failed')
        self.assertEquals(output['api3'], 'unknown')
  def test_is_user_cloud_admin(self):
    # slip in some fake users
    self.setupUserInfoMocks()

    # mock out the App Engine Users API
    self.setupUsersAPIMocks()

    data1 = AppDashboardData()

    # First call, not logged in.
    self.assertFalse(data1.is_user_cloud_admin())

    # First user: [email protected], admin=True.
    self.assertTrue(data1.is_user_cloud_admin())

    # Second user: [email protected], admin=False.
    self.assertFalse(data1.is_user_cloud_admin())

    # Third user: [email protected], admin=False.
    self.assertFalse(data1.is_user_cloud_admin())
  def test_can_upload_apps(self):
    # slip in some fake users
    self.setupUserInfoMocks()

    # mock out the App Engine Users API
    self.setupUsersAPIMocks()

    data1 = AppDashboardData()

    # First call, not logged in.
    self.assertFalse(data1.can_upload_apps())

    # First user: [email protected], upload=True.
    self.assertTrue(data1.can_upload_apps())

    # Second user: [email protected], upload=True.
    self.assertTrue(data1.can_upload_apps())

    # Third user: [email protected], upload=False.
    self.assertFalse(data1.can_upload_apps())
示例#17
0
    def test_rebuild_dash_layout_settings_dict_default(self):
        # slip in some fake users
        self.setupUserInfoMocks()

        # mock out the App Engine Users API
        self.setupUsersAPIMocks()

        data1 = AppDashboardData()

        user1 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user2 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user3 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user4 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")

        # First call, not logged in.
        self.assertEqual({},
                         data1.rebuild_dash_layout_settings_dict(email=None))

        # First user: [email protected], upload=True, cloud_admin=True
        self.assertEqual(
            self.user_info1_cloud_admin_dict,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user1.email)))

        # Second user: [email protected], upload=True, cloud_admin=False
        self.assertEqual(
            self.user_info2_can_upload_apps_dict,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user2.email)))

        # Third user: [email protected], upload=False, cloud_admin=False
        self.assertEqual(
            self.user_info3_cannot_upload_apps_dict,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user3.email)))

        # Fourth user: [email protected], upload=False, cloud_admin=False
        self.assertEqual(
            self.user_info4_cannot_upload_and_owns_no_apps_dict,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user4.email)))
示例#18
0
 def get(self):
     """ Retrieves the cached information about applications running in this
 AppScale deployment as a JSON-encoded dict. """
     self.response.out.write(
         json.dumps(AppDashboardData().get_application_info()))
 def test_update_database_info(self):
   fake_get_appcontroller_client = flexmock()
   data = AppDashboardData()
   output = data.update_database_info()
   self.assertEquals(output['table'], 'table')
   self.assertEquals(output['replication'], 3)
 def test_init(self):
   data1 = AppDashboardData()
   self.assertNotEquals(None, data1.helper)
   
   data2 = AppDashboardData(flexmock())
   self.assertNotEquals(None, data2.helper)
示例#21
0
 def get(self):
     """ Retrieves the cached information about machine-level statistics as a
 JSON-encoded dict. """
     self.response.out.write(
         json.dumps(AppDashboardData().get_status_info()))
 def test_get_head_node_ip(self):
   data1 = AppDashboardData()
   fake_ip  = '1.1.1.1'
   self.assertEquals(data1.get_head_node_ip(), fake_ip)
 def test_update_head_node_ip(self):
   fake_ip  = '1.1.1.1'
   self.assertEquals(fake_ip, AppDashboardData().update_head_node_ip())
示例#24
0
    def test_set_dash_layout_settings_with_argument(self):
        # slip in some fake users
        self.setupUserInfoMocks()

        # mock out the App Engine Users API
        self.setupUsersAPIMocks()

        data1 = AppDashboardData()
        #Sending new dictionaries

        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }

        self.assertEqual(data1.set_dash_layout_settings(values=user_setting),
                         None)

        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }

        # First user: [email protected], upload=True, cloud_admin=True
        user1_should_return = {
            "nav":
            ["debugging_monitoring", "appscale_management", "app_management"],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting)),
            user1_should_return)

        # Second user: [email protected], upload=True, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user2_should_return = {
            "nav": ["debugging_monitoring", "app_management"],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting)),
            user2_should_return)

        # Third user: [email protected], upload=False, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user3_should_return = {
            "nav": ["debugging_monitoring"],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting)),
            user3_should_return)

        # Fourth user: [email protected], upload=False, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user4_should_return = {
            "nav": [],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting)),
            user4_should_return)
 def test_get_database_info(self):
   data1 = AppDashboardData()
   output = data1.get_database_info()
   self.assertEquals(output['table'], 'table')
   self.assertEquals(output['replication'], 3)
示例#26
0
    def test_rebuild_dash_layout_settings_dict_custom(self):
        # slip in some fake users
        self.setupUserInfoMocks()

        # mock out the App Engine Users API
        self.setupUsersAPIMocks()

        data1 = AppDashboardData()

        user1 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user2 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user3 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")
        user4 = data1.get_by_id(app_dashboard_data.UserInfo, "*****@*****.**")

        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        # First user: [email protected], upload=True, cloud_admin=True
        user1_should_return = {
            "nav":
            ["debugging_monitoring", "appscale_management", "app_management"],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting,
                                               user_info=user1)),
            user1_should_return)
        self.assertEqual(
            user1_should_return,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user1.email)))

        # Second user: [email protected], upload=True, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user2_should_return = {
            "nav": ["debugging_monitoring", "app_management"],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting,
                                               user_info=user2)),
            user2_should_return)
        self.assertEqual(
            user2_should_return,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user2.email)))

        # Third user: [email protected], upload=False, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user3_should_return = {
            "nav": ["debugging_monitoring"],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting,
                                               user_info=user3)),
            user3_should_return)
        self.assertEqual(
            user3_should_return,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user3.email)))

        # Fourth user: [email protected], upload=False, cloud_admin=False
        user_setting = {
            "nav": [
                "debugging_monitoring", "appscale_management",
                "app_management", "invalid_key"
            ],
            "panel": [
                "cloud_stats", "database_stats", "upload_app", "app_console",
                "memcache_stats"
            ]
        }
        user4_should_return = {
            "nav": [],
            "panel": ["upload_app", "app_console"]
        }
        self.assertEqual(
            self.flatten_dash_layout(
                data1.set_dash_layout_settings(values=user_setting,
                                               user_info=user4)),
            user4_should_return)
        self.assertEqual(
            user4_should_return,
            self.flatten_dash_layout(
                data1.rebuild_dash_layout_settings_dict(email=user4.email)))