import gevent

# Pyon imports.
from pyon.agent.agent import ResourceAgentClient
from pyon.event.event import EventPublisher
from pyon.public import log
from pyon.public import IonObject
from pyon.public import RT, PRED
from pyon.util.config import Config
from pyon.util.context import LocalContextMixin
from pyon.util.containers import DotDict


# Ion imports.
from ion.agents.platform.rsn.simulator.logger import Logger
Logger.set_logger(log)
from ion.agents.mission_executive import MissionLoader, MissionScheduler

# Interface imports.
from interface.objects import AttachmentType

# Mock imports.
# from mock import Mock, patch


class FakeProcess(LocalContextMixin):
    """
    A fake process used because the test case is not an ion process.
    """
    name = ''
    id = ''
#!/usr/bin/env python
"""
@package ion.agents.platform.rsn.simulator.test.test_oms_simulator
@file    ion/agents/platform/rsn/simulator/test/test_oms_simulator.py
@author  Carlos Rueda
@brief   Test cases for the simulator, by default in embedded form,
         but the OMS environment variable can be used to indicate other.
"""

__author__ = 'Carlos Rueda'

from pyon.public import log
from ion.agents.platform.rsn.simulator.logger import Logger
Logger.set_logger(log)

from pyon.util.unit_test import IonUnitTestCase

from ion.agents.platform.rsn.oms_client_factory import CIOMSClientFactory
from ion.agents.platform.rsn.test.oms_test_mixin import OmsTestMixin

from nose.plugins.attrib import attr
import unittest
import os

#
# Skip if OMS environment variable is defined: this unit test is specifically
# for the simulator run in embedded form. Other tests, eg., test_oms_client,
# are more flexible (and "integration" in nature), allowing to test against
# not only the simulator (launched in whatever form) but also the real RSN OMS
# endpoint.
#