def test_alpn_success(self):
            select_args = []
            def select(conn, options):
                select_args.append((conn, options))
                return b'spdy/2'

            client_context = Context(TLSv1_METHOD)
            client_context.set_alpn_protos([b'http/1.1', b'spdy/2'])

            server_context = Context(TLSv1_METHOD)
            server_context.set_alpn_select_callback(select)

            # Necessary to actually accept the connection
            server_context.use_privatekey(
                load_privatekey(FILETYPE_PEM, server_key_pem))
            server_context.use_certificate(
                load_certificate(FILETYPE_PEM, server_cert_pem))

            # Do a little connection to trigger the logic
            server = Connection(server_context, None)
            server.set_accept_state()

            client = Connection(client_context, None)
            client.set_connect_state()

            self._interactInMemory(server, client)

            self.assertEqual([(server, [b'http/1.1', b'spdy/2'])], select_args)

            self.assertEqual(server.get_alpn_proto_negotiated(), b'spdy/2')
            self.assertEqual(client.get_alpn_proto_negotiated(), b'spdy/2')
Clients and servers that agree on the negotiated ALPN protocol can
dataset/ETHPy150Open cloudera/hue/desktop/core/ext-py/pyopenssl/OpenSSL/test/test_ssl.py/ApplicationLayerProtoNegotiationTests.test_alpn_success