summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-19 19:03:39 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-19 19:03:39 +0000
commit38136da6281356361a54cfdf0bf6099575ade4ca (patch)
tree22305d48461d8aeb3b4a97788e6e5a70879f8404 /tests
parentdd3b7a3773c7eb210041fd2e88f908e755dde8ef (diff)
downloadlasso-38136da6281356361a54cfdf0bf6099575ade4ca.tar.gz
lasso-38136da6281356361a54cfdf0bf6099575ade4ca.tar.xz
lasso-38136da6281356361a54cfdf0bf6099575ade4ca.zip
little tests benchmarking AuthnRequest creation and AuthnResponse processing.
Diffstat (limited to 'tests')
-rw-r--r--tests/perfs.c154
1 files changed, 154 insertions, 0 deletions
diff --git a/tests/perfs.c b/tests/perfs.c
new file mode 100644
index 00000000..764c1a8f
--- /dev/null
+++ b/tests/perfs.c
@@ -0,0 +1,154 @@
+/*
+ * Lasso library performance tests
+ *
+ * Copyright (C) 2004 Entr'ouvert
+ * http://lasso.entrouvert.org
+ *
+ * Author: Frederic Peters <fpeters@entrouvert.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <sys/time.h>
+#include <time.h>
+
+#include <lasso.h>
+
+char* create_authn_response_msg(char *query);
+
+char*
+create_authn_response_msg(char *query)
+{
+ LassoServer *server;
+ LassoLogin *login;
+ char *t;
+ int rc;
+
+ server = lasso_server_new(
+ TESTSDATADIR "/idp1-la/metadata.xml",
+ TESTSDATADIR "/idp1-la/private-key-raw.pem",
+ NULL, /* Secret key to unlock private key */
+ TESTSDATADIR "/idp1-la/certificate.pem");
+ lasso_server_add_provider(
+ server,
+ LASSO_PROVIDER_ROLE_SP,
+ TESTSDATADIR "/sp1-la/metadata.xml",
+ TESTSDATADIR "/sp1-la/public-key.pem",
+ TESTSDATADIR "/ca1-la/certificate.pem");
+
+ login = lasso_login_new(server);
+ rc = lasso_login_process_authn_request_msg(login, strchr(query, '?')+1);
+
+ rc = lasso_login_validate_request_msg(login, 1, 0);
+ rc = lasso_login_build_assertion(login,
+ LASSO_SAML_AUTHENTICATION_METHOD_PASSWORD,
+ "FIXME: authenticationInstant",
+ "FIXME: reauthenticateOnOrAfter",
+ "FIXME: notBefore",
+ "FIXME: notOnOrAfter");
+ rc = lasso_login_build_authn_response_msg(login);
+
+ t = g_strdup(LASSO_PROFILE(login)->msg_body);
+ lasso_login_destroy(login);
+ lasso_server_destroy(server);
+
+ return t;
+}
+
+int
+main(int argc, char *argv[])
+{
+ LassoServer *server;
+ LassoLogin *login;
+ LassoLibAuthnRequest *request;
+ int i, n;
+ struct timeval start, end;
+ int usec;
+ char *authn_response_msg;
+
+ lasso_init();
+
+ server = lasso_server_new(
+ TESTSDATADIR "/sp1-la/metadata.xml",
+ TESTSDATADIR "/sp1-la/private-key-raw.pem",
+ NULL, /* Secret key to unlock private key */
+ TESTSDATADIR "/sp1-la/certificate.pem");
+ lasso_server_add_provider(
+ server,
+ LASSO_PROVIDER_ROLE_IDP,
+ TESTSDATADIR "/idp1-la/metadata.xml",
+ TESTSDATADIR "/idp1-la/public-key.pem",
+ TESTSDATADIR "/ca1-la/certificate.pem");
+
+ n = 100;
+ if (argc == 2) {
+ n = atoi(argv[1]);
+ }
+
+ login = lasso_login_new(server);
+
+ fprintf(stdout, "Generating %d AuthnRequest...\n", n);
+ gettimeofday(&start, NULL);
+ for (i=0; i < n; i++) {
+ fprintf(stderr, ".");
+ lasso_login_init_authn_request(login, "https://idp1/metadata",
+ LASSO_HTTP_METHOD_REDIRECT);
+ request = LASSO_LIB_AUTHN_REQUEST(LASSO_PROFILE(login)->request);
+ request->IsPassive = 0;
+ request->NameIDPolicy = g_strdup(LASSO_LIB_NAMEID_POLICY_TYPE_FEDERATED);
+ request->consent = g_strdup(LASSO_LIB_CONSENT_OBTAINED);
+ request->ProtocolProfile = g_strdup(LASSO_LIB_PROTOCOL_PROFILE_BRWS_POST);
+ lasso_login_build_authn_request_msg(login);
+ if ((i+1)%70 == 0) {
+ fprintf(stderr, " %d \n", i+1);
+ }
+ }
+ if ((i)%70 != 0) {
+ fprintf(stderr, " %d \n", i);
+ }
+ gettimeofday(&end, NULL);
+ usec = (end.tv_sec*1000000+end.tv_usec)-(start.tv_sec*1000000+start.tv_usec);
+ fprintf(stdout, " total: %.4f seconds (%f request/second) (%.2f ms/request)\n",
+ (double)usec/1000000,
+ (double)n/usec*1000000,
+ (double)usec/1000/n);
+
+ authn_response_msg = create_authn_response_msg(LASSO_PROFILE(login)->msg_url);
+
+ fprintf(stdout, "Processing %d AuthnResponse...\n", n);
+ gettimeofday(&start, NULL);
+ for (i=0; i < n; i++) {
+ fprintf(stderr, ".");
+ lasso_login_process_authn_response_msg(login, authn_response_msg);
+ lasso_login_accept_sso(login);
+ if ((i+1)%70 == 0) {
+ fprintf(stderr, " %d \n", i+1);
+ }
+ }
+ if ((i)%70 != 0) {
+ fprintf(stderr, " %d \n", i);
+ }
+ gettimeofday(&end, NULL);
+ usec = (end.tv_sec*1000000+end.tv_usec)-(start.tv_sec*1000000+start.tv_usec);
+ fprintf(stdout, " total: %.4f seconds (%f request/second) (%.2f ms/request)\n",
+ (double)usec/1000000,
+ (double)n/usec*1000000,
+ (double)usec/1000/n);
+
+
+
+ return 0;
+}
+