def test_activate_subscribed_service(self):
        stdout, stderr, MLOGFILENAME, MSSEC2SECRETSFILE = self.initialize_testlocal_state('test_activate_subscribed_service')
        self.patch(signup, 'VERIFY_POLL_TIME', .1)
        self.patch(signup, 'VERIFY_TOTAL_WAIT', .2)

        from lae_automation.aws import queryapi
        def call_hostpubkeyextractor(consoletext, instanceId):
            return MOCKSERVERSSHFP
        self.patch(queryapi, 'hostpubkeyextractor', call_hostpubkeyextractor)

        d = signup.activate_subscribed_service(self.MEMAIL, self.MKEYINFO, self.MCUSTOMER_ID,
                                               self.MSUBSCRIPTION_ID, self.MPLAN_ID, stdout, stderr,
                                               MSSEC2SECRETSFILE, MLOGFILENAME, self.CONFIGFILEPATH,
                                               self.SERVERINFOPATH)

        def _check(ign):
            content = FilePath(MLOGFILENAME).getContent()
            self.failUnlessIn('MEMAIL', content)
            self.failUnlessIn('MKEYINFO', content)
        d.addCallback(_check)
        return d
def main(stdin, flapp_stdout, flapp_stderr):
    append_record(flapp_stdout, "Automation script started.")
    parameters_json = stdin.read()
    (customer_email,
     customer_pgpinfo,
     customer_id,
     plan_id,
     subscription_id) = simplejson.loads(parameters_json)

    (abslogdir_fp,
    stripesecrets_log_fp,
    SSEC2secrets_log_fp,
    signup_log_fp) = create_log_filepaths(plan_id, customer_id, subscription_id)

    append_record(flapp_stdout, "Writing logs to %r." % (abslogdir_fp.path,))

    stripesecrets_log_fp.setContent(parameters_json)

    SSEC2_secretsfile = SSEC2secrets_log_fp.open('a+')
    signup_logfile = signup_log_fp.open('a+')
    signup_stdout = LoggingStream(signup_logfile, '>')
    signup_stderr = LoggingStream(signup_logfile, '')
    sys.stdout = signup_stderr

    def errhandler(err):
        fh = flapp_stderr.open('a+')
        fh.write(repr(err))
        fh.close()
        return err

    d = defer.succeed(None)
    d.addCallback(lambda ign: activate_subscribed_service(customer_email, customer_pgpinfo,
                                                          customer_id, subscription_id,
                                                          plan_id,
                                                          signup_stdout, signup_stderr,
                                                          SSEC2_secretsfile, signup_log_fp.path)
                  )
    d.addErrback(errhandler)
    d.addBoth(lambda ign: signup_logfile.close())
    def test_timeout_addressreq(self):
        stdout, stderr, MLOGFILENAME, MSSEC2_secretsfile = self.initialize_testlocal_state('test_timeout_addressreq')
        from lae_automation.aws import queryapi
        def call_get_EC2_properties(ec2accesskeyid, ec2secretkey, EC2_ENDPOINT, parser,
                                    *instance_ids):
            return defer.succeed(None)
        self.patch(queryapi, 'get_EC2_properties', call_get_EC2_properties)

        d = signup.activate_subscribed_service(self.MEMAIL, self.MKEYINFO, self.MCUSTOMER_ID, 
                                               self.MSUBSCRIPTION_ID, self.MPLAN_ID, stdout, stderr, 
                                               MSSEC2_secretsfile, MLOGFILENAME, self.CONFIGFILEPATH, 
                                               self.SERVERINFOPATH)
        def _bad_success(ign):
            self.fail("should have got a failure")
        def _check_failure(f):
            f.trap(signup.TimeoutError)
            stdout.close()
            logfp = FilePath(MLOGFILENAME)
            out = logfp.getContent()
            self.failUnlessIn("Timed out", out)
        d.addCallbacks(_bad_success, _check_failure)
        return d
    def test_EC2_not_listening(self):
        stdout, stderr, MLOGFILENAME, MSSEC2_secretsfile = self.initialize_testlocal_state('test_EC2_not_listening')
        self.patch(signup, 'VERIFY_POLL_TIME', .1)
        self.patch(signup, 'VERIFY_TOTAL_WAIT', .2)

        from lae_automation.aws import queryapi
        def call_get_EC2_consoleoutput(ec2accesskeyid, ec2secretkey, endpoint_uri, instance_id):
            return defer.succeed(None)
        self.patch(queryapi, 'get_EC2_consoleoutput', call_get_EC2_consoleoutput)

        d = signup.activate_subscribed_service(self.MEMAIL, self.MKEYINFO, self.MCUSTOMER_ID, 
                                               self.MSUBSCRIPTION_ID, self.MPLAN_ID, stdout, stderr, 
                                               MSSEC2_secretsfile, MLOGFILENAME, self.CONFIGFILEPATH, 
                                               self.SERVERINFOPATH)
        def _bad_success(ign):
            self.fail("should have got a failure")
        def _check_failure(f):
            f.trap(signup.TimeoutError)
            stdout.close()
            logfp = FilePath(MLOGFILENAME)
            out = logfp.getContent()
            self.failUnlessIn("Timed out", out)
        d.addCallbacks(_bad_success, _check_failure)
        return d