Path: blob/master/test/jdk/javax/rmi/ssl/SocketFactoryTest.java
41149 views
/*1* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 4932837 658223526* @summary Test SslRMI[Client|Server]SocketFactory equals() and hashCode().27* This test does not affect VM global state, so othervm is28* not required.29* @author Daniel Fuchs30*31* @run main SocketFactoryTest32*/3334import java.io.PrintWriter;35import java.io.IOException;36import java.io.Serializable;37import java.io.ObjectInputStream;38import java.io.ObjectOutputStream;39import java.io.ByteArrayInputStream;40import java.io.ByteArrayOutputStream;41import java.util.Map;42import java.util.HashMap;43import javax.net.ssl.SSLContext;44import javax.rmi.ssl.SslRMIClientSocketFactory;45import javax.rmi.ssl.SslRMIServerSocketFactory;4647public class SocketFactoryTest {4849public static final String[] ciphersuite =50new String[] { "SSL_RSA_WITH_NULL_MD5" };5152public static final String[] protocol =53new String[] { "TLSv1" };5455public static class MySslRMIClientSocketFactory56extends SslRMIClientSocketFactory {57}5859public static class MySslRMIServerSocketFactory60extends SslRMIServerSocketFactory {61public MySslRMIServerSocketFactory() {62super();63}64public MySslRMIServerSocketFactory(String[] ciphers,65String[] protocols,66boolean need) {67super(ciphers, protocols, need);68}69public MySslRMIServerSocketFactory(SSLContext context,70String[] ciphers,71String[] protocols,72boolean need) {73super(context, ciphers, protocols, need);74}75}7677public static Object serializeAndClone(Object o) throws Exception {78System.out.println("Serializing object: " + o);79final ByteArrayOutputStream obytes =80new ByteArrayOutputStream();81final ObjectOutputStream ostr =82new ObjectOutputStream(obytes);83ostr.writeObject(o);84ostr.flush();8586System.out.println("Deserializing object");87final ByteArrayInputStream ibytes =88new ByteArrayInputStream(obytes.toByteArray());89final ObjectInputStream istr =90new ObjectInputStream(ibytes);91return istr.readObject();92}9394public static void testEquals(Object a, Object b, boolean expected) {95final boolean found = a.equals(b);96if (found != expected)97throw new RuntimeException("testEquals failed: objects are " +98((found)?"equals":"not equals"));99if (found && a.hashCode()!=b.hashCode())100throw new RuntimeException("testEquals failed: objects are " +101"equals but their hashcode differ");102}103104public static void main(String[] args) {105try {106System.out.println("SocketFactoryTest START.");107108final SSLContext context = SSLContext.getInstance("SSL");109context.init(null, null, null);110111final SslRMIClientSocketFactory client1 =112new SslRMIClientSocketFactory();113final SslRMIClientSocketFactory client2 =114new SslRMIClientSocketFactory();115final SslRMIClientSocketFactory client11 =116(SslRMIClientSocketFactory) serializeAndClone(client1);117final SslRMIClientSocketFactory client21 =118(SslRMIClientSocketFactory) serializeAndClone(client2);119final SslRMIServerSocketFactory server1 =120new SslRMIServerSocketFactory();121final SslRMIServerSocketFactory server2 =122new SslRMIServerSocketFactory(null,123null,124false);125final SslRMIServerSocketFactory server3 =126new SslRMIServerSocketFactory(ciphersuite,127null,128false);129final SslRMIServerSocketFactory server4 =130new SslRMIServerSocketFactory(null,131protocol,132false);133final SslRMIServerSocketFactory server5 =134new SslRMIServerSocketFactory(null,135null,136true);137final SslRMIServerSocketFactory server6 =138new SslRMIServerSocketFactory(null,139null,140null,141false);142final SslRMIServerSocketFactory server7 =143new SslRMIServerSocketFactory(SSLContext.getDefault(),144null,145null,146false);147final SslRMIServerSocketFactory server8 =148new SslRMIServerSocketFactory(null,149null,150null,151true);152final SslRMIServerSocketFactory server9 =153new SslRMIServerSocketFactory(SSLContext.getDefault(),154null,155null,156true);157final SslRMIServerSocketFactory server10 =158new SslRMIServerSocketFactory(context,159null,160null,161true);162final MySslRMIClientSocketFactory subclient1 =163new MySslRMIClientSocketFactory();164final MySslRMIClientSocketFactory subclient2 =165new MySslRMIClientSocketFactory();166final MySslRMIServerSocketFactory subserver1 =167new MySslRMIServerSocketFactory();168final MySslRMIServerSocketFactory subserver2 =169new MySslRMIServerSocketFactory(null,170null,171false);172final MySslRMIServerSocketFactory subserver3 =173new MySslRMIServerSocketFactory(ciphersuite,174null,175false);176final MySslRMIServerSocketFactory subserver4 =177new MySslRMIServerSocketFactory(null,178protocol,179false);180final MySslRMIServerSocketFactory subserver5 =181new MySslRMIServerSocketFactory(null,182null,183true);184final MySslRMIServerSocketFactory subserver6 =185new MySslRMIServerSocketFactory(null,186ciphersuite,187null,188false);189final MySslRMIServerSocketFactory subserver7 =190new MySslRMIServerSocketFactory(SSLContext.getDefault(),191ciphersuite,192null,193false);194final MySslRMIServerSocketFactory subserver8 =195new MySslRMIServerSocketFactory(context,196null,197null,198true);199200// clients201System.out.println("testEquals(client1,client1,true)");202testEquals(client1,client1,true);203System.out.println("testEquals(client1,client2,true)");204testEquals(client1,client2,true);205System.out.println("testEquals(client1,client11,true)");206testEquals(client1,client11,true);207System.out.println("testEquals(client1,client21,true)");208testEquals(client1,client21,true);209System.out.println("testEquals(client11,client21,true)");210testEquals(client11,client21,true);211System.out.println("testEquals(client1,null,false)");212testEquals(client1,null,false);213System.out.println("testEquals(client1,server1,false)");214testEquals(client1,server1,false);215System.out.println("testEquals(client21,server2,false)");216testEquals(client21,server2,false);217System.out.println("testEquals(client1,new Object(),false)");218testEquals(client1,new Object(),false);219220// servers221System.out.println("testEquals(server1,server1,true)");222testEquals(server1,server1,true);223System.out.println("testEquals(server2,server2,true)");224testEquals(server2,server2,true);225System.out.println("testEquals(server3,server3,true)");226testEquals(server3,server3,true);227System.out.println("testEquals(server4,server4,true)");228testEquals(server4,server4,true);229System.out.println("testEquals(server5,server5,true)");230testEquals(server5,server5,true);231System.out.println("testEquals(server1,server2,true)");232testEquals(server1,server2,true);233System.out.println("testEquals(server1,server3,false)");234testEquals(server1,server3,false);235System.out.println("testEquals(server2,server3,false)");236testEquals(server2,server3,false);237System.out.println("testEquals(server3,server4,false)");238testEquals(server3,server4,false);239System.out.println("testEquals(server4,server5,false)");240testEquals(server4,server5,false);241System.out.println("testEquals(server6,server7,false)");242testEquals(server6,server7,false);243System.out.println("testEquals(server8,server9,false)");244testEquals(server8,server9,false);245System.out.println("testEquals(server9,server10,false)");246testEquals(server9,server10,false);247System.out.println("testEquals(server2,server6,true)");248testEquals(server2,server6,true);249System.out.println("testEquals(server2,server7,false)");250testEquals(server2,server7,false);251System.out.println("testEquals(server5,server8,true)");252testEquals(server5,server8,true);253System.out.println("testEquals(server5,server9,false)");254testEquals(server5,server9,false);255System.out.println("testEquals(server1,null,false)");256testEquals(server1,null,false);257System.out.println("testEquals(server2,null,false)");258testEquals(server2,null,false);259System.out.println("testEquals(server3,null,false)");260testEquals(server3,null,false);261System.out.println("testEquals(server1,client2,false)");262testEquals(server1,client2,false);263System.out.println("testEquals(server2,client11,false)");264testEquals(server2,client11,false);265System.out.println("testEquals(server1,new Object(),false)");266testEquals(server1,new Object(),false);267268// client subclass269System.out.println("testEquals(subclient1,subclient1,true)");270testEquals(subclient1,subclient1,true);271System.out.println("testEquals(subclient1,subclient2,true)");272testEquals(subclient1,subclient2,true);273System.out.println("testEquals(subclient1,client1,false)");274testEquals(subclient1,client1,false);275System.out.println("testEquals(client1,subclient1,false)");276testEquals(client1,subclient1,false);277System.out.println("testEquals(subclient1,null,false)");278testEquals(subclient1,null,false);279System.out.println("testEquals(subclient1,server1,false)");280testEquals(subclient1,server1,false);281System.out.println("testEquals(server1,subclient1,false)");282testEquals(server1,subclient1,false);283System.out.println("testEquals(subclient2,subserver2,false)");284testEquals(subclient1,subserver2,false);285System.out.println("testEquals(subclient1,new Object(),false)");286testEquals(subclient1,new Object(),false);287288// server subclass289System.out.println("testEquals(subserver1,subserver1,true)");290testEquals(subserver1,subserver1,true);291System.out.println("testEquals(subserver2,subserver2,true)");292testEquals(subserver2,subserver2,true);293System.out.println("testEquals(subserver3,subserver3,true)");294testEquals(subserver3,subserver3,true);295System.out.println("testEquals(subserver4,subserver4,true)");296testEquals(subserver4,subserver4,true);297System.out.println("testEquals(subserver5,subserver5,true)");298testEquals(subserver5,subserver5,true);299System.out.println("testEquals(subserver1,subserver2,true)");300testEquals(subserver1,subserver2,true);301System.out.println("testEquals(subserver1,subserver3,false)");302testEquals(subserver1,subserver3,false);303System.out.println("testEquals(subserver2,subserver3,false)");304testEquals(subserver2,subserver3,false);305System.out.println("testEquals(subserver3,subserver4,false)");306testEquals(subserver3,subserver4,false);307System.out.println("testEquals(subserver4,subserver5,false)");308testEquals(subserver4,subserver5,false);309System.out.println("testEquals(subserver3,subserver6,true)");310testEquals(subserver3,subserver6,true);311System.out.println("testEquals(subserver3,subserver7,false)");312testEquals(subserver3,subserver7,false);313System.out.println("testEquals(subserver1,server1,false)");314testEquals(subserver1,server1,false);315System.out.println("testEquals(server1,subserver1,false)");316testEquals(server1,subserver1,false);317System.out.println("testEquals(subserver2,server2,false)");318testEquals(subserver2,server2,false);319System.out.println("testEquals(server2,subserver2,false)");320testEquals(server2,subserver2,false);321System.out.println("testEquals(subserver3,server3,false)");322testEquals(subserver3,server3,false);323System.out.println("testEquals(server3,subserver3,false)");324testEquals(server3,subserver3,false);325System.out.println("testEquals(subserver4,server4,false)");326testEquals(subserver4,server4,false);327System.out.println("testEquals(server4,subserver4,false)");328testEquals(server4,subserver4,false);329System.out.println("testEquals(subserver5,server5,false)");330testEquals(subserver5,server5,false);331System.out.println("testEquals(server5,subserver5,false)");332testEquals(server5,subserver5,false);333System.out.println("testEquals(server10,subserver8,false)");334testEquals(server10,subserver8,false);335System.out.println("testEquals(subserver8,server10,false)");336testEquals(subserver8,server10,false);337System.out.println("testEquals(subserver1,null,false)");338testEquals(subserver1,null,false);339System.out.println("testEquals(subserver1,client2,false)");340testEquals(subserver1,client2,false);341System.out.println("testEquals(subserver1,subclient2,false)");342testEquals(subserver1,subclient2,false);343System.out.println("testEquals(client1,subserver2,false)");344testEquals(client1,subserver2,false);345System.out.println("testEquals(subserver1,new Object(),false)");346testEquals(subserver1,new Object(),false);347348System.out.println("SocketFactoryTest PASSED.");349} catch (Exception x) {350System.out.println("SocketFactoryTest FAILED: " + x);351x.printStackTrace();352System.exit(1);353}354}355}356357358